私は休眠中のオープンソース プロジェクトを復活させるチームの一員です。私が最初にしたことの 1 つは、Windows 上の Visual C++ でビルドするようにソフトウェアを修正することでした。今後のリリースで MSVC バージョンを配布する予定です。
現在の DLL は__stdcall
、説明できない理由から、呼び出し規則を使用してビルドされています。大したことではありませんが、これも MinGW でビルドされており、MinGW と Visual C++ が何__stdcall
を意味するかについて意見が一致していません。詳細はこちらを参照してください。基本的に、MinGW は のように名前をマングルFunction@n
し、MSVC は のようにマングルし_Function@n
ます。__stdcall
DLLで使用しないのは正当な理由です...
への切り替え__stdcall
は以前のメンテナにとって十分に重要であり、切り替えたときに (ABI 互換性を壊したため) メジャー バージョン番号を変更しました__cdecl
。
基本的に、MinGW のように、何らかのエイリアスを使用するか、名前を変更するだけで、DLL 内のシンボルを装飾するように MSVC を説得する必要があります。スイート内の他のソフトウェアは簡単に再構築して DLL を呼び出すことができるため、どれが必要であるかは気にしません。それは私が心配している既存のソフトウェアです。
これには .DEF ファイルが必要だと思いますが、手動で作成するのは気が進まないのです。数十のエクスポートされた関数があります。
ここに質問があります - これを行うための自動化された、またはほとんど自動化された方法はありますか?