質問

何が正しい方法でインポートするにはC++のクラスからDLL?まVisual C++.

がdllexport/輸出です。def+LoadLibrary+GetProcAddress trifectaが、この値は管理画面より変更可能でC++クラスだけます。これによりC++名の難号化?くの、めんどくさいんだよなこと。

役に立ちましたか?

解決 2

この溶液 http://www.codeproject.com/KB/DLL/XDllPt4.aspx

り組ん&girls

他のヒント

を追加する必要がありますの

extern "C"
{
...
}

回避機能の難号化.

あると考え書簡単なC関数:

SomeClass* CreateObjectInstace()
{
    return new SomeClass();
}

void ReleaseObject(SomeClass* someClass)
{
   delete someClass;
}

のみを使用することで、これらの機能できるその後の追加-変更機能のオブジェクトを作成/削除をします。このと呼ばれることもあります。

私は常を宣言するインターフェース基底クラスを使用この宣言私のアプリケーションに使用LoadLibrary,GetProcAddressの工場機能です。この因子は常にポインタを返しますインタフェースのタイプです。

ここでは実践的な例では、 輸出は、MFCの文書ビューからDLL, 動的ロード

チェック この質問.基本的には、二つの方法があります。できるマークをクラスを使用_dllexportそしてリンクの輸入図書館には、DLLを読み込まれます。または負荷のDLLを動的に自分で利用でき、工場の機能のう@titanaeことを示唆

dllexport/dllimport工場でのクラスの名前のヘッダファイルだといいます。

一般的に使用したいdllexport、dll、およびdllimportのエグゼクもご利用いただけdllexportもので、この権利'でtinily速である。

明らかにするためのリンク時に作成する。利用できる/delayloadリンカーの指令で動がとれていないことが考えられたいからで受け付けます。

したければ、LoadLibrary風荷重、使ってあなたを包み込むC++の機能を"extern C"ラッパー.問題は、が名前の難号化、タイプは全難号化した名前と思います。

の回避策は一般的に提供するC関数のポインタを返し、正しいクラスCOM作品はこのように、輸出は4Cの機能をdllとを取得するために使用するインタフェースのメソッド内のオブジェクトのdll.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top