首页 > 解决方案 > _declspec 应该放在哪里?

问题描述

我正在从 def 文件切换到将 _declspec 用于我维护的库。我已经阅读了关于 SO 和 MSDN 文档的几个问题。我了解该功能的工作原理。我根据构建环境创建了宏并使用_declspec或 gcc 。宏还可以在和__attribute__之间正确选择。_declspec(dllexport)_declspec(dllimport)

_declspec在函数定义上使用有什么害处吗?应该_declspec只用在函数原型上吗?

我希望在函数原型和定义上都有 marco。我_declspec在函数原型和定义上都进行了测试。使用 VS 编译的库没有警告,我能够毫无问题地使用该库。

标签: cshared-librariesdllexport

解决方案


对函数定义没有危害 - sing __declspec(dllimport) 在函数声明中是可选的,但如果您使用此关键字,编译器会生成更高效的代码。但是,您必须使用 __declspec(dllimport) 来导入可执行文件以访问 DLL 的公共数据符号和对象。它主要用于从/导出符号到共享库 (DLL) 中导入符号。Visual C++ 和 GCC 编译器都支持 __declspec(dllimport) 和 __declspec(dllexport)。

您也可以将其用于变量。


推荐阅读