私は過去2日間、同様の質問からの回答を検索してコードに実装しましたが、ほとんど成功しませんでした。外部の.dll(Windows)であるAPIがあり、APIを参照するためにヘッダーファイルが.cppファイルにインクルードされています。
ただし、この問題が発生した場合、何をしても、.hファイルのこの行を参照する未解決の外部シンボルが常に表示されます。はい、Googleを使用して、見つけた回答をコードに変更しましたが、成功しませんでした。
Foo.h
Class Foo {
public:
static Foo* Interface_Get(char* dllfilename);
Foo.cpp
// I declare this just underneath the #include "Foo.h" header
Foo *foo = 0;
私のメイン関数の中で、私はそれをこれとして宣言します(他のいくつかの関数と一緒に)。
//This has already been created and both Header and .dll are in the same directory.
Foo::Interface_Get("bar.dll");
そして、私はこのエラーを受け取ります
error LNK2019: unresolved external symbol
"public: static class Foo * __cdecl Foo::Interface_Get(char *)"
私は知っていることをすべて試しました(これは私の最初の.dll作成経験です)私は痛々しいほど明白な何かを見逃していると感じていますが、私の人生ではそれを見ることができません。
Foo.cpp全体
#include "Foo.h"
Foo* Foo::Interface_Get(char* dllfilename); //May not be redeclared outside class error
Foo* foo = 0;
bool Frame()
{
if (foo->Key_Down(DIK_ESCAPE))
return false;
return true;
}
INT WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, INT)
{
foo->Interface_Get("bar.dll");
foo->System_SetState(grSTATE_FRAME, Frame);
foo->System_SetState(grSTATE_WINDOWED, true);
foo->System_SetState(grSTATE_KEYBOARD, true);
foo->System_Initiate();
foo->System_Start();
foo->System_Shutdown();
foo->Inferface_Release();
return 0;
}