[英]Porting DLL import from c# to c++
这就是我使用c#使用/导入DLL的方式。 我如何在C ++项目上做到这一点?
[DllImport(@".\x64\something.dll", EntryPoint = "somthng", CharSet = CharSet.Unicode)]
static extern int somthng(string input);
如果您没有可用于DLL的开发标头和lib文件,并且需要将DLL动态加载到C ++项目中,则可以执行以下操作。
定义一个函数指针(相当于您的extern
声明):
typedef int FnSomeFunction(const char* input);
加载库(我在这里使用LoadLibraryA
来加载一个名为ansi的DLL,这取决于您的C ++项目)。 DLL必须位于搜索路径中,即与可执行文件位于同一路径中):
HMODULE hModule = LoadLibraryA("something.dll");
检查模块是否成功加载:
if (hModule == nullptr)
throw std::runtime_error("Lib not loaded");
从库获取函数入口点:
FnSomething* fnSomething = (FnSomeFunction*)GetProcAddress(hModule, "somthng");
调用函数:
(*fnSomething)("some text");
不再需要时释放库:
FreeLibrary(hModule);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.