VS2010本机多目标定位



我的Win7开发机器上安装了VS2005、VS2008和VS2010。我有一个特定的项目,它使用第三方DLL,当EXE项目由VS2010构建时(当目标是v100或v90工具集时),它在LoadLibrary()调用期间会出现异常。当直接由VS2005或VS2008构建时,它可以完美地工作。

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

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

我应该能够打开VS2010项目,并将平台工具集从v100更改为v90,然后VS2010将实际使用VS2008编译器、头和库来构建程序。如果是,那么它做得不"正确",因为当项目以这种方式构建时,DLL将不会加载。我试着查看构建日志来验证使用了哪个编译器,但日志中没有路径或版本号,所以失败了。

这是一个直接写入Win32Apis的纯C(不是C++,不是MFC,不是.NET)项目。有没有办法做到这一点,或者我只是为一个项目(在整个系统的100多个编译器中)使用不同的编译器?

救命!

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

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

我想我已经解决了这个问题。看起来,虽然VS2010会很高兴地运行VS2008编译器、链接器等。VS2010不会让项目独处。当项目导入到VS2010时,命令行中添加了一些新的默认设置,显然,其中至少有一个设置与VS2008的不同足以使我使用的DLL无法加载。

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

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

最新更新