特定のニーズにより、特定の方法で名前が付けられた関数をエクスポートする DLL を作成する必要があり、それも壊れています。
?drawGdi@stop@234@@Z
これを達成する方法はありますか?
それはできますが、DEF ファイルを作成する必要があります。
extern "C" declspec(dllexport) void foo(int);
EXPORTS
?drawGdi@stop@234@@Z=_foo
(_foo
は関数のエクスポートされた名前です)。
もちろん、DLL をリンクするときに DEF ファイルを指定することを忘れないでください。
詳細については、DEF ファイルに関するドキュメントを参照してください。
たとえば、関数を宣言できませんか
class myclass;
extern "C" void my_function(int,myclass&);
次に、次のようにエクスポートする必要がありますmy_function
(少なくともPosixシステムでは。Windowsでも同じだと思いますが、わかりません)。
GCC でコンパイルする場合は、Asm Labelsを使用できます。その場合、アセンブラが受け入れられる名前は何でも問題ありません。
ELF 実行可能ファイルを備えた Linux では、David Schwartz が提案したように、単純にバイナリ ファイルを編集することはおそらくできませんでした (おそらく、ELF でシンボルに使用されるハッシュ テーブルが壊れてしまうからです)。