dllでエクスポートする必要があるクラスの関数の周りの装飾を取り除く方法を知りたいと思います。たとえば、ときにこのようなものがあります:関数の装飾なしでdllのクラスをエクスポートする
extern "C"
{
__declspec(dllexport) int __cdecl getWhatever();
}
をそして、あなたはdependencyWalker、エクスポートされた関数の名前を確認することを、あなたは正確に同じ関数名を持つことになります。
しかし、あなたはクラスと似た何かをしている場合、このような関数装飾文字の束があるでしょう:
extern "C"
{
class __declspec(dllexport) Toto
{
__cdecl Toto(){}
__cdecl ~Toto(){}
int __cdecl getBlob(float y){return (int)y;}
};
}
dependencyWalkerではあなたがこれを表示されます。
?? 0Totoを@@ AAEの@ XZ
?? 1Toto @@ AAE @ XZ
?? 4Toto @@ QAEAAV0 @ ABV0 @@ Z
?getBlob @ Toto @@ AAAHM @ Z
手続き関数のようにきれいにするには?あなたはC++のクラスのネーム・マングリングを無効にすることはできませんし、あなたがマングリングせずにそれらをエクスポートすることはできません
ありがとう、私は探しますそれ。 – millionDollahSmile