gpt4 book ai didi

c++ - 导出 :DLL linking using c++

转载 作者:搜寻专家 更新时间:2023-10-31 01:08:59 25 4
gpt4 key购买 nike

我知道如何为不包含类的 dll 使用显式链接,但如何链接包含类的 dll,示例:

class math{
public:
int sum(int,int);
};

加载它:

    typedef int(*func)(int,int);
int main{
HINSTANCE hDLL; // Handle to DLL
hDLL = LoadLibrary("math.dll");
func add=(func)GetProcAddress(hDLL, "sum");
add(4,5);
return 0;
}

如果我这样做它停止工作并退出程序,如果我删除它工作的类

最佳答案

GetProcAddress 可以加载从 DLL 导出的符号,前提是您使用正确的名称调用它。

在您的情况下,该函数首先没有导出。如果是,它肯定不是所谓的“sum”,而是一些 20-40 个字符的乱码。

要将 DLL 与 C++ 代码一起使用,您需要完全放弃 GetProcAddress 方式,而仅依赖于能够很好地映射名称的 implib。

为此,您将 __declspec(dllexport) 添加到类中(最好在客户端使用 dllimport),并将您的 DLL 项目添加为项目引用。或者,将与 DLL 一起创建的 .lib 添加到客户端项目。

关于c++ - 导出 :DLL linking using c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17434723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com