提振VS2010快递 - 重新定义和无效的调用约定错误(Boost in VS2010 Expres

2019-09-17 06:52发布

我使用VS2010 Express和刚刚安装升压v1_47。 我已经添加了“包括”文件夹“额外包括文件夹”选项,并在“LIB”文件夹中的“其他库”中选择VS.

然后,我包括提升/ regex.hpp在我的文件中的一个,但实际上写道使用升压还没有代码。 然而,构建解决方案的时候,我有很多的错误消息,两种风格来:

  • Redefiniton错误,如:

1> d:\升压\ boost_1_47 \升压/细节/ interlocked.hpp(83):错误C2373: '_InterlockedCompareExchangePointer':重新定义; 不同类型修饰符1> C:\ Program Files文件\微软的SDK \的Windows \ V7.1 \包括\ WINNT.H(2597):看 '_InterlockedCompareExchangePointer' 的声明

  • 无效的调用约定错误(大量的这些),如:

d:\提升\ boost_1_47 \升压/正则表达式/ V4 / regex_traits_defaults.hpp(271):错误C3641: '提振:: re_detail :: global_lower':无效的调用约定 '__cdecl' 的功能,使用/ clr编译:纯或/ CLR :安全

注:我还没有明确列入WINNT.H在任何我的源/头文件,并且试图去激活预编译头和删除stdafx.h中包括,但它并没有解决问题。

这是怎么回事?

提前致谢

Answer 1:

你必须确保你使用相同的设置作为升压编译程序。 好像你使用了错误的项目模板(CLR东西)来创建应用程序项目。

你可以尝试修改现有项目的属性,使之与升压兼容,但CLR ...项目有很多默认设置不兼容的属性值,所以,我认为最简单的办法是从头开始创建一个新项目(和导入现有的代码)。

您应该使用“空项目”模板并创建一个新的项目,然后将现有的源文件和头文件添加到它,并添加升压包括路径再次,和任何所需的升压.lib文件添加到Project Properties > Linker > Input > Additional Dependencies (多数Boost库开箱没有因为他们只是头,所以你可能不需要添加任何的.libs添加任何东西连接器的输入)。

升压是一个C ++需要,设计成被C消耗++代码,而不是C / CLI代码,从而它可以仅与本地C ++类一起使用,并且包括在其中包含的C / CLI代码源文件时最升压头会产生报头。



文章来源: Boost in VS2010 Express - redefinition and invalid calling convention errors