0

これが一般的な問題であることを考えると、このファイル ロジックを使用する場合、このエラーの原因は何でしょうか。

  • Utils.h: 宣言bool Dummy();
  • Utils.cpp: 定義bool Dummy() {return true;}
  • ClassA.h : 無関係class A { bool sheet; public: A(); };
  • ClassA.cpp: 無関係なコード:

     #include "Utils.h"
     #include "ClassA.h"
     A::A() { sheet = Dummy(); }
    

    : すべてのヘッダー ファイルにはガード#pragma onceマクロが含まれています。

エラー:このようなもの

Error   2   error LNK2028: unresolved token (0A00000B) "bool __clrcall Dummy(void)" 

Error   3   error LNK2019: unresolved external symbol "bool __clrcall Dummy(void)" .... in ClassA.obj
4

1 に答える 1

2

bool __clrcall Dummy(void)

/ clrを有効にしてClassA.cppファイルをコンパイルし、マネージコードを生成します。ただし、Dummy()関数は/ clrなしでコンパイルされたため、呼び出し規約は__cdeclになります。リンカは不一致に気づき、ダミーの管理された実装を見つけることができません。

Utils.cppがネイティブコードに基づいて構築されていることをコンパイラに通知する必要があります。ClassA.cppを次のように修正します。

#pragma managed(push, off)
#include "Utils.h"
#pragma managed(pop)
#include "ClassA.h"
// etc...
于 2012-06-26T12:30:58.530 に答える