visual-c++ - Visual C++ 2005不会为链接器添加/dll参数

标签 visual-c++ linker

Visual Studio 2005项目中的哪些设置可能会导致生成程序不将/ dll参数添加到链接器命令行中?

背景:

我们有一个大型的VC6项目,我正在移植到VC2005。该项目包含许多MFC扩展DLL,并且在运行构建时遇到以下链接器警告:

警告LNK4086:入口点'_WinMainCRTStartup'不是具有12个字节参数的__stdcall;图像可能无法运行

对_WinMainCRTStartup的引用非常可疑,因为它是DLL(根本不应该具有_WinMainCRTStartup函数)。对源的搜索表明没有定义此类功能,因此我的结论是链接程序将其提供给我们。

查看linker.exe命令行参数会显示问题(为简便起见,我删除了完整路径):

/OUT:"Debug\thedll.dll"/INCREMENTAL / MANIFEST /MANIFESTFILE:"Debug\thedll.dll.intermediate.manifest"/DEF:".\thedll.def“/ DEBUG /PDB:"\Debug\thedll.pdb “/ SUBSYSTEM:WINDOWS / MACHINE:X86 version.lib

缺少一个非常关键的命令行参数:/ DLL

如果我手动添加此参数(使用项目属性,配置属性\ Linker \ Command Line设置),则可以正确进行编译。

但是我想知道项目配置中的什么导致linker.exe的/ DLL命令行设置被忽略了吗?

我已经创建了一个扩展名为DLL的临时项目,并且对.vcproj文件进行了并排比较,但是看不到任何会影响此效果的特定设置。

编辑-我已经检查了配置类型的配置属性\常规\项目默认设置。它设置为动态库(.dll)

EDIT2-显然,VS忽略了该设置,直到我手动对其进行了调整。 rggggg

最佳答案

我可以建议的第一件事是验证项目的配置类型是否设置为“动态库”。右键单击项目->选择属性->选择常规->配置类型。

关于visual-c++ - Visual C++ 2005不会为链接器添加/dll参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1301995/

相关文章:

visual-studio-2010 - VC++ DLL - 防止逆向工程和试用期到期

c++ - MSVC 与 GCC 与 sizeof 的行为不一致

c++ - 链接器如何处理链接到共享库的 C++ 静态库的唯一类型信息约束?

iphone - Apple Mac-o-Linker (id) 错误

c++ - 链接两个具有相同定义的目标文件时出现多重定义错误

c++ - 如何设置 CFileDialog 的默认文件类型?

c++ - 如何将 ANSI 字节转换为 Unicode 字符串?

c# - 未调用 WH_KEYBOARD_LL Hook

c - Debian 8 上的链接问题

c++ - OpenCV 未解析的外部符号 - 需要其他库吗?