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

时间:2019-03-28 00:31:39

标签: c# c++ dll

这就是我使用c#使用/导入DLL的方式。如何在c ++项目中做到这一点?

[DllImport(@".\x64\something.dll", EntryPoint = "somthng", CharSet = CharSet.Unicode)]
static extern int somthng(string input);

1 个答案:

答案 0 :(得分:0)

证明您没有可用于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);