header.h
namespace VectorMath {
static FVector Make(float X, float Y, float Z);
}
file.cpp
namespace VectorMath {
static FVector Make(float X, float Y, float Z)
{
FVector ret;
ret.X = X;
ret.Y = Y;
ret.Z = Z;
return ret;
}
}
エラー
1> c:\ program files(x86)\ microsoftvisual studio 10.0 \ vc \ include \ xstring(541):エラーC2129:静的関数 'FVector VectorMath :: Make(float、float、float)'が宣言されていますが、定義されていません1> c:\ Programming ** * * \ vectormath.h(19):「VectorMath :: Make」の宣言を参照してください
エラーは、xstring(標準の文字列ライブラリの一部)の541行を指し示しています。これは、何にも関連性がまったくないようです。
「static」を削除すると、「Make」が未解決の外部シンボルであるというリンカーエラーが発生することに注意してください...
を削除する必要があります。static
そうしないと、関数が異なるコンパイルユニット間で表示されなくなります。使用するだけ
namespace VectorMath {
FVector Make(float X, float Y, float Z);
}
同様に定義についても。
これでリンクの問題が解決しない場合は、実際にfile.cpp
正しくコンパイルしてリンクすることを確認する必要がありますが、それstatic
は間違いなく間違っています。
問題を見つけたというコメントに関して、inline
-functionsを使用すると、宣言を定義から分離できないということでした。はい、それは、生成されたメソッドのシンボルとその可視性と同様の効果があります。私が奇妙だと思うのinline
は、質問で言及したことがないのに、答えを受け入れるための前提条件としてこれを要求することです。あなたが本当に理解していないランダムなキーワードを追加するだけだとどうやって知ることができますか?これは、他の人があなたの問題を解決するのに適した基盤ではありません。あなたは本当のコードを投稿し、私たちに正直である必要があります。今後さらに質問する場合は、この点に注意してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加