C++ 中warning C4251请大家进来帮忙看看,该怎么解决

C++ 中warning C4251请大家进来帮忙看看
typedef struct _transaction_process 
{
  char TX_CODE[9];
  char TX_NAME[61];
  char TX_MAIN_SERIAL[24];
}

_transaction_process m_trans_process;

在VC++6.0中编译报错为:warning C4251: 'm_trans_process' : struct '_transaction_process' needs to have dll-interface to be used by clients of class 'CBuMainData'
see declaration of '_transaction_process'
始终不明白C4251这个错误究竟warning在哪里,请各位大虾指导谢谢。

------解决方案--------------------
typedef struct{ 
char TX_CODE[9]; 
char TX_NAME[61]; 
char TX_MAIN_SERIAL[24]; 
} _transaction_process ;
定义改成这样试试?

------解决方案--------------------
Visual C++ 概念:生成 C/C++ 程序
编译器警告(等级 1)C4251

错误消息 
“identifier”: 类“type”需要由类“type2”的客户端使用 dll 接口


要在使用 __declspec(dllexport) 导出类时使数据损坏的可能性降到最小,请确保:

通过从 DLL 导出的函数访问所有静态数据。

类的任何内联方法都不能修改静态数据。

类的所有内联方法都不使用 CRT 函数或使用静态数据的其他库函数(有关更多信息,请参见 PRB:跨 DLL 边界传递 CRT 对象时可能出现的错误)。

如果 EXE 和 DLL 中的实例化具有静态数据差异时,类的任何方法(无论是否为内联)都不能使用类型。

通过定义一个 DLL 可以避免导出类,该 DLL 定义一个具有虚函数的类,您可以调用这些函数对该类型的对象进行实例化和删除。 然后在该类型上调用虚函数即可。

有关导出模板的更多信息,请参见 http://support.microsoft.com/default.aspx?scid=kb;zh-cn;168958。

如果要从标准 C++ 库中的类型派生,并且要编译调试版本 (/MTd),而且编译器错误信息引用 _Container_base,则在 Microsoft Visual C++ 2005 中可以忽略 C4251。

 复制代码
// C4251.cpp
// compile with: /EHsc /MTd /W2 /c
#include <vector>
using namespace std;
class Node;
class __declspec(dllimport) VecWrapper : vector<Node *> {}; // C4251

楼主参考下这
http://msdn.microsoft.com/zh-cn/library/esew7y1w(VS.80).aspx