VS2010原生多目标

时间:2012-10-04 19:52:04

标签: visual-studio-2010 multitargeting multi-targeting

我的Win7开发机器上安装了VS2005,VS2008和VS2010。我有一个使用第三方DLL的特定项目,当VSE10构建EXE项目时(在针对v100或v90工具集时),在LoadLibrary()调用期间获得异常。当直接由VS2005或VS2008构建时,它非常有效。

根据李绍(微软)2009年博客文章:

http://blogs.msdn.com/b/vcblog/archive/2009/12/08/c-native-multi-targeting.aspx

我应该能够打开VS2010项目并将Platform Toolset从v100更改为v90,然后VS2010将实际使用VS2008编译器,头文件和库来构建程序。如果是,那么它没有“正确”执行它,因为在以这种方式构建项目时DLL不会加载。我试着查看构建日志以验证使用了哪个编译器,但是我的日志中没有路径或版本号,所以这是一个破产。

这是一个直接写入Win32Apis的普通C(不是C ++,不是MFC,而不是.NET)项目。有没有办法让这个工作,或者我只是为一个项目使用不同的编译器(超过100个组成整个系统)?

HELP!

2 个答案:

答案 0 :(得分:1)

看看水仙花:http://daffodil.codeplex.com/

安装Daffodil之后,您将能够使用VS 2010使用旧版本的库来构建项目。

答案 1 :(得分:0)

我想我已经解决了。看起来,虽然VS2010将很乐意运行VS2008编译器,链接器等.VS2010将 NOT 单独保留项目。当项目导入VS2010时,命令行中添加了一些新的默认设置,显然,其中至少有一个与VS2008不同,使得我使用的DLL无法加载。

当我将数据执行保护(DEP)的高级链接器设置从是(默认)更改为否时,我的程序再次开始工作!事实上,我甚至不再需要使用v90工具集进行编译 - 整个问题是由 / NXCOMPAT 链接器命令行开关的新默认值引起的。在VS2005 IDE(项目创建的项目)中的项目设置中甚至没有引用 / NXCOMPAT 开关,而是运行“link /?”在VC8 bin文件夹中显示该开关已知,默认为 NO

太糟糕了,Visual Studio IDE不包含新版本中 CHANGED 项目正在使用的默认设置列表。如果这太难了,导入器应该使用旧的默认值指定更改的设置,否则项目导入不正确,不是吗?