非静的メンバー関数の関数ポイントを静的関数ポインターを期待する関数に渡すための機能を提供するためのチュートリアルのコードライブラリを使用しています。おそらく私が何を訴えているのかを知るのに役立つので、ここにリンクhttp:/があります。 /www.codeproject.com/KB/cpp/thunk32.aspxこのコードは、私がダウンロードしてほぼすべてのものをセットアップしたBoostライブラリを使用しています。
サンクライブラリでは、ヘッダーファイルの1つに次のようなセクションがあります。
#define BOOST_PP_ITERATION_PARAMS_1 (3,(0,THUNK32_MAX_ARGS,"Thunk32_template.h"))
??=include BOOST_PP_ITERATE()
#undef BOOST_PP_ITERATION_PARAMS_1
しかし、これは私に膨大な量のエラーを与え、それを次のように変更することで解決できます
#define BOOST_PP_ITERATION_PARAMS_1 (3,(0,THUNK32_MAX_ARGS,"Thunk32_template.h"))
#include BOOST_PP_ITERATE()
#undef BOOST_PP_ITERATION_PARAMS_1
ダウンロードされたこのコードは、2番目のプロジェクトとして私のソリューションに含まれています。このプロジェクトは、正常にコンパイルおよびビルドできます。しかし、このコードを使用している私のプロジェクトにはリンクの問題があり、質問を保存するために、これらのエラーメッセージが表示されます
1>WebCamera.obj : error LNK2019: unresolved external symbol "protected: __thiscall indev::Thunk32Base::Thunk32Base(void)" (??0Thunk32Base@indev@@IAE@XZ) referenced in function "public: __thiscall indev::Thunk32<class WebCamera,void __cdecl(struct HWND__ *,struct videohdr_tag *)>::Thunk32<class WebCamera,void __cdecl(struct HWND__ *,struct videohdr_tag *)>(void)" (??0?$Thunk32@VWebCamera@@$$A6AXPAUHWND__@@PAUvideohdr_tag@@@Z@indev@@QAE@XZ)
1>WebCamera.obj : error LNK2019: unresolved external symbol "protected: __thiscall indev::Thunk32Base::~Thunk32Base(void)" (??1Thunk32Base@indev@@IAE@XZ) referenced in function "public: __thiscall indev::Thunk32<class WebCamera,void __cdecl(struct HWND__ *,struct videohdr_tag *)>::~Thunk32<class WebCamera,void __cdecl(struct HWND__ *,struct videohdr_tag *)>(void)" (??1?$Thunk32@VWebCamera@@$$A6AXPAUHWND__@@PAUvideohdr_tag@@@Z@indev@@QAE@XZ)
1>WebCamera.obj : error LNK2019: unresolved external symbol _capCreateCaptureWindowA@32 referenced in function "public: bool __thiscall WebCamera::Init(struct HWND__ *)" (?Init@WebCamera@@QAE_NPAUHWND__@@@Z)
これは、コンストラクタとデストラクタが宣言されておらず、私のWebCamera.Init()も台無しになっていると言っていると思います。Thunk32プロジェクトがエクスポートするライブラリが他のプロジェクトに含まれていることを確認しましたが、それでもこれらのエラーが発生します。
??=include
変更すべき正しい仮定を行ったかどうかを知りたいのですが、変更した#include
場合、何を間違えたのか、または失敗したのかによって、これらのリンカーエラーが発生します。または、関数ポインターを非静的メンバー関数に渡すことができる別の方法を私に提供できれば、それは素晴らしいことです。
ありがとう