0

我用 Visual Basic Express 创建了一个非常简单的 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”之类的工具时,我的功能不可见。

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

谢谢。文森特。

4

1 回答 1

0

就像一些评论表明的那样:

JNA 只能为本地PE32 / PE32+ dll 中的方法提供“Java 绑定”(即允许您从 Java 调用方法)。相比之下,VB.Net dll 始终是托管dll。

要区分本机和托管 dll,您可以使用例如其中一种工具dumpbincorflags;第一个附带例如 Visual Studio,第二个附带例如最近的 Microsoft SDK。

调用dumpbin /dependents有问题的托管 dll将显示来自mscoree.dll.

调用corflags有问题的原生 dll会显示错误(s.th. like The specified file does not have a valid managed header

此信息取自此 DLL 是托管的还是非托管的?但也经过了我的验证。

于 2015-01-30T16:15:07.967 回答