c++ - 在 Visual C++ 中使用 dllimport

标签 c++ windows dllimport

我已经有几年没有做过任何 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/

相关文章:

c++ - DLL 需要来自它将链接到的应用程序的符号(一个类)

c++ - 取消引用右值指针会产生左值吗?

windows - 订阅到期后 MSDN Windows 许可证是否仍然有效?

c# - P/Invoke 为目标 DLL 提供的内存是否较少?

javascript - 子浏览器窗口如何更改窗口的属性?

c# - 批处理脚本在调用 exe 后错误退出

c++ - VB.NET 无法加载 DLL 找不到指定的模块。当dll导入时

c++ - 是否应该避免 Eigen 不支持的模块?

c++初始化一个带有数组的结构类型

c++ - 如何在 C++ 中创建多类型对象池