Vb.net DLL методът не се вижда

Създадох VB.net DLL с Visual Basic Express много просто, това е моят код:

Public Class Class1
  Public Function SayHello() As String
    Return "Hello"
  End Function
End Class    
  • Бих искал да използвам този DLL от JAVA с JNA, но Eclipse ми каза, че процедурата „SayHello“ не съществува в моя DLL.
  • Когато използвам инструменти като "Dependency Walker", функцията ми не се вижда.

И така, моят въпрос: как мога да направя тази функция извикваема и видима??

Благодаря. Винсент.


person programmeur-excel    schedule 29.12.2014    source източник
comment
JNA има достъп само до C++ dll. Ще трябва да създадете c++ обвивка около вашата VBNet lib.   -  person ortis    schedule 29.12.2014
comment
възможен дубликат на Извикване на управляван код от неуправляван C   -  person xxbbcc    schedule 29.12.2014
comment
възможен дубликат на Как мога да извикам .NET код от Java?   -  person Mark    schedule 29.12.2014


Отговори (1)


Както показват някои от коментарите:

JNA е в състояние да предостави само "обвързвания на Java" (т.е. ви позволява да извиквате методи от Java) за методи в родни PE32 / PE32+ dlls. VB.Net dlls за разлика от тях са винаги управлявани dlls.

За да разграничите родните и управляваните dll, можете да използвате напр. един от инструментите dumpbin или corflags; първата доставка с напр. Visual Studio, второто идва с напр. скорошни SDK на Microsoft.

Извикването на dumpbin /dependents на въпросна управлявана dll ще покаже зависимост от mscoree.dll.

Извикването на corflags на въпросна родна dll ще покаже грешка (s.th. като The specified file does not have a valid managed header)

Тази информация е взета от Управляван или неуправляван ли е този DLL?, но беше проверено и от мен.

person Hille    schedule 30.01.2015