我离开了我的联盟,所以我希望有人可以就如何继续给我一些建议。
长话故事是,我从一个jar开始,我运行了一个名为ikvm的应用程序来生成我的java类的.net库。经过测试,工作正常。那么我有一个.net dll,我使用mono aot生成一个非托管的.dll,.exp和.lib但没有头文件。我知道所涉及的类名和方法。
现在我无法弄清楚我是如何使用这些文件在没有头文件的c ++项目中使用这些类的。我正在使用visual studio。如果有任何我错过的信息会有所帮助,请发表评论。
答案 0 :(得分:1)
如果你有一个无人的DLL,那么有很多方法可以使用它c ++。
一种简单的方法是使用LoadLibrary()& GetProcAddress()函数。例如:
//Define the function prototype
typedef int (CALLBACK* FirstFunction)(LPCTSTR);
void main()
{
HINSTANCE dllHandle = NULL;
FirstFunction pFirstFunction = NULL;
//Load DLL
dllHandle = LoadLibrary("Your.dll");
if(dllHandle != NULL)
{
//Get pointer to function FindBook
pFirstFunction = (FirstFunction)GetProcAddress(dllHandle,
"FindBook");
// If function pointer is valid then you can use it
if (pFirstFunction != NULL)
{
LPCTSTR strBook = "Duchamp";
short nSuccessCode = pFirstFunction(strBook);
}
}
}
答案 1 :(得分:0)
如果您没有头文件,则需要"制造"一个(根据.dll中的确切规范),或动态加载库和函数 - 请参阅LoadLibrary和GetProcAddress。
要查看dll中的确切功能规格,您可以使用例如DependencyWalker(外部工具)或直接由Visual Studio提供的dumpbin实用程序:
dumpbin /exports thename.dll
这将显示开始的所有出口。
特别要注意调用约定(stdcall,fastcall等)。