发布模式下的Visual Studio C ++ 2010编译错误

时间:2013-11-01 15:57:32

标签: visual-c++ compiler-construction

我在Visual Studio 2010(C ++项目)中有一个项目,它在调试模式下编译没有问题,但在发布模式下给了我一些奇怪的“语法”错误。错误是这样的:

c:\program files\point grey research\flycapture2\include\Error.h(38): error C2059: syntax error : 'string'
1>c:\program files\point grey research\flycapture2\include\Error.h(39): error C2146: syntax error : missing ';' before identifier 'Error'
1>c:\program files\point grey research\flycapture2\include\Error.h(39): error C2470: 'Error' : looks like a function definition, but there is no parameter list; skipping apparent body
1>c:\program files\point grey research\flycapture2\include\BusManager.h(56): error C2059: syntax error : 'string'
1>c:\program files\point grey research\flycapture2\include\BusManager.h(57): error C2146: syntax error : missing ';' before identifier 'BusManager'

FlyCapture是我的代码使用的库。我仔细检查了包含的头目录和lib库的路径,它们是正确的。我还更改了库文件名,使它们不包含“d”(用于调试)。我还检查了我的代码是否有预编译器_DEBUG语句。我找不到一个。这非常令人沮丧。任何想法我还应该检查什么?我正在编译x64模式。

编辑:

第一个错误指向下面粘贴的库头文件中的“class FLYCAPTURE2_API Error”行(我甚至没有自己编写这个库,它在调试模式下工作):

namespace FlyCapture2
{
    struct ErrorImpl;

    /**
     * The Error object represents an error that is returned from the library.
     * Overloaded operators allow comparisons against other Error objects or
     * the ErrorType enumeration.
     */
    class FLYCAPTURE2_API Error
    {
    public:

        /**
         * Default constructor.
         */
        Error();

        /**
         * Copy constructor.
         */
        Error( const Error& error );

        /**
         * Default destructor.
         */
        virtual ~Error();

这对我来说很奇怪。这段代码应该没有问题。

1 个答案:

答案 0 :(得分:1)

我明白了。我能够找到FlyCapture2库附带的示例项目,该库配置为在发布模式下编译。它包含几个与调试模式不同的开关。所以我的路径是正确的,但有一些编译器开关和库忽略启用。如果使用FlyCapture2的任何人都会遇到这种情况,请参阅示例项目并将其切换到发布模式,然后将项目的发布模式与他们的发布模式进行比较。谢谢你们!