2014-12-29 68 views
0

我创建了一个VB.net DLL使用Visual Basic速成很简单,这是我的代码:Vb.net DLL方法不可见

Public Class Class1 
    Public Function SayHello() As String 
    Return "Hello" 
    End Function 
End Class  
  • 我想用从Java这个DLL与JNA ,但是Eclipse比我的DLL中不存在的程序“SayHello”要好。
  • 当我使用像“Dependency Walker”这样的工具时,我的功能不可见。

所以我的问题:我怎样才能使这个功能可调用和可见?

谢谢。文森特。

+0

JNA只能访问C++ dll。你将不得不围绕VBNet库构建一个C++包装器。 – ortis

+0

可能重复[调用托管代码从非托管C](http://stackoverflow.com/questions/10821109/calling-managed-code-from-unmanaged-c) – xxbbcc

+0

可能重复的[我如何调用.NET代码Java的?](http://stackoverflow.com/questions/283679/how-can-i-call-net-code-from-java) – Mark

回答

0

像一些评论指出:

JNA只能够在本地 PE32/PE32 +的DLL的方法提供“Java绑定”(即可以让你从Java调用的方法)。 VB.Net DLL总是对比管理 DLL。

要区分本机和受管dll,您可以使用其中一个工具dumpbincorflags;第一次运送,例如Visual Studio,第二个自带例如最近的Microsoft SDKs。

调用dumpbin /dependents对提问被管理的dll将显示从mscoree.dll的依赖关系。

调用上的质疑机DLLcorflags会显示错误(某事物一样The specified file does not have a valid managed header

这个信息是从Is this DLL managed or unmanaged?采取但我已经被验证了。