文章目录
- warning LNK4017: DESCRIPTION 语句不支持目标平台;已忽略
- 概述
- 笔记
- 备注
- END
warning LNK4017: DESCRIPTION 语句不支持目标平台;已忽略
概述
基于ATL的COM DLL导出函数,无法用__declspec(dllexport)直接在函数上标记为导出函数。
只能用.def加入工程配置中。
原始工程是VC6的。
; server.def
; defined interface to export
LIBRARY "SERVER"
; warning LNK4017: DESCRIPTION 语句不支持目标平台;已忽略
DESCRIPTION "server.dll"
EXPORTS
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
现在用VS2019编译, 工具链降到VS2013都有这个警告。
查了一下,大家都说注释掉DESCRIPTION那行就行。试了一下,确实可以。
但是,为啥呢?
难道新版VS的编译器已经不支持.def文件中的DESCRIPTION关键字了么?
查了一下,果真如此。
笔记
https://learn.microsoft.com/zh-cn/cpp/build/reference/module-definition-dot-def-files?view=msvc-140
https://learn.microsoft.com/zh-cn/cpp/build/exporting-from-a-dll-using-def-files?view=msvc-140
微软给的例子,已经不用DESCRIPTION作为关键字了。
对于新版VS(>= vs2013)来说, DESCRIPTION只是保留字,不是关键字。
https://learn.microsoft.com/zh-cn/cpp/build/reference/reserved-words?view=msvc-140
备注
现在msdn上的帮助,只从VS2015开始。
旧版的VS已经查不到对应资料了。