0

2 つの (かなり古い) ライブラリは C で書かれており、もともとは MSVC 6 でコンパイルされています。これを変更して、mingw で使用したいと考えています。

編集: ライブラリは __stdcall 呼び出し規約を使用しているようです。

したがって、ライブラリ 'a' が最初にビルドされ、MSVC 6 によって a.def を含む a.lib と a.dll が生成されます。次に、ライブラリ b がビルドされ、ライブラリ: a.lib が使用されます。

mingwでa.dllのビルドに成功しました。しかし、.lib ファイルを作成する方法がわかりません。もう 1 つの要件は、MinGW ツールまたはその他の (無料の) ソリューションを使用してこれを完全に行う必要があることです。

別の質問は、コードが完全に C 言語で行われていると仮定した場合、mingw ライブラリは msvc と混在して一致するでしょうか? ありがとう。

4

1 に答える 1

0

MSVC ではできなくて MinGW でできることの 1 つは、DLL に直接リンクすることです。つまり、MinGW はインポート ライブラリを必要としません。DLL を MinGW リンカへの入力として渡すだけで、インポート ライブラリを使用するのと同じくらい良いはずです。

一般に、C 言語 DLL エクスポートは、作成したツールに関係なく、MSVC または MinGW のいずれかで使用できるはずです。ただし、正しく動作しない可能性があるまれなケースがあります。私の頭の上では、構造体が返される方法に ABI にいくつかの違いがあり、いくつかの浮動小数点型の処理方法にいくつかの違いがあるかもしれません。私がこれまでに遭遇したほとんどの DLL API は、これらのことを行いませんが、私が考えていない、または認識していない他のコーナー ケースがあるかもしれません。

于 2013-04-03T18:50:29.080 に答える