c - _declspec 应该放在哪里?
问题描述
我正在从 def 文件切换到将 _declspec 用于我维护的库。我已经阅读了关于 SO 和 MSDN 文档的几个问题。我了解该功能的工作原理。我根据构建环境创建了宏并使用_declspec
或 gcc 。宏还可以在和__attribute__
之间正确选择。_declspec(dllexport)
_declspec(dllimport)
_declspec
在函数定义上使用有什么害处吗?应该_declspec
只用在函数原型上吗?
我希望在函数原型和定义上都有 marco。我_declspec
在函数原型和定义上都进行了测试。使用 VS 编译的库没有警告,我能够毫无问题地使用该库。
解决方案
对函数定义没有危害 - sing __declspec(dllimport) 在函数声明中是可选的,但如果您使用此关键字,编译器会生成更高效的代码。但是,您必须使用 __declspec(dllimport) 来导入可执行文件以访问 DLL 的公共数据符号和对象。它主要用于从/导出符号到共享库 (DLL) 中导入符号。Visual C++ 和 GCC 编译器都支持 __declspec(dllimport) 和 __declspec(dllexport)。
您也可以将其用于变量。
推荐阅读
- python - python中的嵌套数组
- python - 如何在 python 3.10 的“base”中找到第 num 个“sub”出现?
- java - 在 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 类型的对象上找不到参数 [directory 'libs'] 的 compile()
- php - Laravel - 将多个数组作为新行插入?
- typescript - 如何以角度展平嵌套的 formGroups
- database - 使用带有查询、数据可视化、dax 的 Power BI 中的 dax 表达式显示数据
- php - 找不到类“Spatie\YamlFrontMatter\YamlFrontMatter”
- php - Google Drive 访问令牌自动化
- html - Angular 在取决于垫选择的输入中显示不同的占位符
- javascript - 在Javascript中过滤两个日期之间的数据