我已经有几年没有做过任何 Windows 编程了,我对如何使用 dllimport 有点生疏。我有一些类似的东西:
extern "C"
{
__declspec(dllimport) int myFunct();
}
int main()
{
cout<<myFunct();
}
我收到 2 个 Unresolved external 链接器错误和一个警告/DELAYLOAD:myLib.dll 被忽略,因为没有找到来自它的导入。 我在这里错过了什么?我认为我可以将 DLL 添加到延迟加载路径,链接器将使用它来导入 dll??
这是一个没有 .h 或 .lib 文件的第 3 方 DLL。
最佳答案
如果你想在运行时链接DLL,你根本不需要导入符号。
只要声明一个函数指针类型,然后LoadLibrary()
/LoadLibraryEx()
, 最后从 GetProcAddress()
中检索函数指针.
示例(为简洁起见省略了错误处理):
typedef int (*MyFunct_t)();
auto myDLL = LoadLibrary("mydll.dll");
auto MyFunct = (MyFunct_t)GetProcAddress(myDLL, "MyFunct");
MyFunct();
(此代码仅用于展示一般流程,从未经过编译和测试,可能包含拼写错误和语法错误,请随时编辑此帖子以修复它们)
关于c++ - 在 Visual C++ 中使用 dllimport,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26966095/