Interix を使用して Windows で C++ アプリケーションを構築しており、サード パーティのライセンス モジュールの機能を提供するために 3 つのオブジェクト ファイルをリンクする必要があります。サード パーティは、Visual Studio によってビルドされたオブジェクト ファイルを提供しています。GCCで使用するためにファイルを変換する方法はありますか? たとえば、名前マングリングを Visual Studio スタイルから GCC スタイルに変更した場合、それで十分でしょうか、それとも 2 つのオブジェクト ファイル形式の間に他に違いがありますか?
1287 次
2 に答える
4
Windows には、標準化された C++ ABI (Application Binary Interface)がありません。ただし、C ABI はあります。これは、たとえば で使用される ABIKernel32.DLL
であるため、すべての Windows プログラミング環境で理解されます。多くの場合、そのような DLL を生成することもできます。
この場合、C++ .obj ファイルは Visual Studio リンカーによってリンクされる必要があります。そのリンカーは間違いなく DLL ファイルを作成できます。extern "C"
ライセンス機能をラップする関数を作成する必要があります。これらの関数が DLL からエクスポートされることを示すために追加__declspec(dllexport)
します (Windows では、関数は既定で DLL に対してプライベートです)。
ヘッダーで、同じ関数を として宣言し__declspec(dllimport)
ます。GCCもそれを理解しています。次に、新しく生成された DLL に対してリンクします。これにより、dllimport
'ed シンボルが解決されます。
于 2013-04-02T06:40:37.743 に答える