この場合、 C4251警告を無視できますか? 実際には、ライブラリとライブラリを使用するプログラムのライブラリコンパイル設定が異なると、いくつかのエラーが発生する可能性があります。次に例を示します。
dll.h
#include <iostream>
#include <string>
using namespace std;
class __declspec(dllexport) HelloWorld
{
public:
#ifdef DTEST
int test;
#endif
HelloWorld();
};
dll.cpp
#include "dll.h"
HelloWorld::HelloWorld()
{
#ifdef DTEST
test=0;
#endif
}
exe.cpp
#include "dll.h"
#include <iostream>
using namespace std;
int main(void)
{
HelloWorld myworld;
return 0;
}
dll.h と dll.cpp をコンパイルして、DTEST の定義で dll.lib と dll.dll を作成しますが、DTEST の定義なしで exe.cpp をコンパイルするとします。ランタイム チェックの失敗 #2 エラーが発生します。このエラーが発生した理由を説明できる人もいます。ありがとう!