繁体   English   中英

将DLL导入从C#移植到C ++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM