创建C++动态链接库(dll)

来源:互联网 发布:孝庄文皇后 知乎 编辑:程序博客网 时间:2024/06/01 07:33

先来一段VC++给我们提供的标准模板代码

//connection.h#ifdef CONNECTION_EXPORTS#define CONNECTION_API __declspec(dllexport)#else#define CONNECTION_API __declspec(dllimport)#endif// 此类是从 connection.dll 导出的class CONNECTION_API Cconnection {public:       Cconnection(void);       // TODO: 在此添加您的方法。};extern CONNECTION_API int nconnection;CONNECTION_API int fnconnection(void);

生成dll后,将connetion.h和生成的connection.lib文件添加到需要引用的项目中,然后在代码中引用头文件,调用Cconnection类,出现出现错误提示:
无法解析的外部符号 "__declspec(dllimport) public: __thiscall Cconnection::Cconnection(void)" (__imp_??0Cconnection@@QAE@XZ),该符号在函数 _wmain 中被引用
根据错误提示,意思是我们在调用Cconnection构造函数时找不到具体的实现,构造函数没实现当然就没法实例,那么现在有两种方法:
1:将Cconnection(void)构造函数删掉,让编译器去实现缺省构造方法。
2:用户自己去实现构造方法。

VS中当dll项目和主项目在统一解决方案下时,需要注意(这是项目移植性最好的方法):
1.主项目->属性->链接器->输入->附加依赖项:添加xxx.lib
2.主项目->属性->链接器->输入->附加库目录:添加$(SolutionDir)$(Configuration)\

至于为什么需要用dll,和相关的准则就不多说,网上很多。

原创粉丝点击