这就是我使用c#使用/导入DLL的方式。如何在c ++项目中做到这一点?
[DllImport(@".\x64\something.dll", EntryPoint = "somthng", CharSet = CharSet.Unicode)]
static extern int somthng(string input);
答案 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);