如何在C++中用dll(dll中的构造函数)创建一些类?

Som*_*ser 8 c++ winapi constructor

如何从dll(dll中的构造函数)创建一些类?(C++)或如何从dll动态加载类?

Jes*_*erE 10

您需要__declspec(dllexport)在构建DLL时使用关键字声明您的类.使用DLL时,需要使用以下方式声明类__declspec(dllimport):

#ifdef COMPILING_DLL
#define DECLSPEC_CLASS __declspec(dllexport)
#else
#define DECLSPEC_CLASS __declspec(dllimport)
#endif

class DECLSPEC_CLASS MyClass
{
...
}
Run Code Online (Sandbox Code Playgroud)

编译DLL时,应将-DCOMPILING_DLL添加到定义列表中.

使用该类时,必须静态链接DLL,即将导入库mydll.lib传递给主程序.

如果要在运行时加载DLL ,则需要在DLL中创建一个C函数,该函数会创建一个对象并为您返回.无法在DLL中动态查找构造函数(使用GetProcAddress()).


jmu*_*llo 3

严格回答你的问题,你需要添加一个 extern "C" 函数来返回构造函数的结果:

extern "C" foo* __declspec(dllexport) new_foo(int x) {
    return new foo(x);
}
Run Code Online (Sandbox Code Playgroud)

然后在源代码中,您可以在“new_foo”上使用 GetProcAddr 来调用该函数。