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/