C++ 类导出错误(错误C2470:看起来像函数定义)

C++ 类导出错误(错误C2470:看起来像函数定义),c++,class,visual-studio-2005,C++,Class,Visual Studio 2005,我无法导出类: #ifndef SDBIDI #define SDBIDI #ifndef SDBIDI_FLAG #define SDBIDI_ORIENT __declspec(dllimport) #else #define SDBIDI_ORIENT __declspec(dllexport) #endif #include "TCInfoSuVars.h" //class is here! SDBIDI_ORIENT int myFoo(FILE *file); // export

我无法导出类:

#ifndef SDBIDI
#define SDBIDI
#ifndef SDBIDI_FLAG
#define SDBIDI_ORIENT __declspec(dllimport)
#else
#define SDBIDI_ORIENT __declspec(dllexport)
#endif

#include "TCInfoSuVars.h" //class is here!

SDBIDI_ORIENT int myFoo(FILE *file); // exporting function

#endif
TCInfoSuVars.h中的类定义

#pragma once
#include <string>
#include <hash_map>

class SDBIDI_ORIENT TCInfoSuVars
{
public:
    std::string id;
    std::string tcVal;

    TCInfoSuVars();
    TCInfoSuVars(std::string _tcVal, std::string _id);

    ~TCInfoSuVars();
};
输出:

TCInfoSuVars.h(14) : error C2470: 'TCInfoSuVars' : looks like a function definition, but there is no parameter list; skipping apparent body
如果我写

class __declspec(dllexport) TCInfoSuVars
一切正常


谢谢大家!

在定义了
SDBIDI\u-ORIENT
之前,在某个地方包含了
TCInfoSuVars.h
——确保首先包含定义
SDBIDI\u-ORIENT
的头文件。

显然,您的
TCInfoSuVars.h
标题取决于另一个标题中的宏定义,其中包含
SDBIDI_ORIENT
(您没有提供名称)。在这种情况下,为什么要将
TCInfoSuVars.h
包含到另一个标题中,而不是以另一种方式执行呢?@AndreyT因为unnamed.h中的某些函数使用这个类它可能与以前一样。。它可能是预编译的头文件吗?如何重新编译头文件?谢谢(VisualStudio2005)您不编译头文件,而是编译包含头的cpp文件。如果要确保预编译头是最新的,请执行项目的完整重建。但是,答案仍然可以解释发生了什么。
class __declspec(dllexport) TCInfoSuVars