Visual C ++ 2005不为链接器添加/ dll参数

时间:2009-08-19 19:02:06

标签: visual-c++ linker

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

背景:

我有一个大型VC6项目,我正在移植到VC 2005.这个项目包含许多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

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

但是我想知道项目配置中是什么导致链接器的/ DLL命令行设置被忽略了?

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

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

EDIT2 - 显然,VS在我手动调整之前忽略了设置。 rggggg

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

链接器似乎想要构建一个控制台程序。打开项目属性。选择常规设置。在那里选择配置类型Dynamic Library。