繁体   English   中英

VS2010本机多目标

[英]VS2010 Native Multi-Targeting

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

根据李少(Microsoft的)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多个项目中)使用了不同的编译器?

救命!

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

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

我想我已经解决了。 看起来,尽管VS2010可以愉快地运行VS2008编译器,链接器等。VS2010 不会将项目搁浅。 当项目导入到VS2010时,命令行中添加了一些新的默认设置,显然,其中至少有一个与VS2008的差异足以使我正在使用的DLL无法加载。

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

不幸的是,Visual Studio IDE不包括已在新版本中更改过的项目所使用的默认设置的列表。 如果那太困难了,导入者应该使用旧的默认值来指定更改的设置,否则项目导入不正确,不是吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM