私は最近、Cヘッダファイル(.h
)、ライブラリファイル(.lib
)、ダイナミックライブラリ(.dll
)で構成されるクローズドソースSDKを手に入れました。それらはMicrosoftのVisual C++を使用してコンパイルされました。しかし、私はMinGW(Windowsに移植されたGCC、プロジェクトになじみのない人)を使って自分のコードを書こうとしています。 ldは.lib
ファイルにリンクできません。 VSコンパイルされたコードと私が書いているGCCコードの間に互換性ラッパーを書くことが可能かどうか疑問に思っていました。.libファイルの周りにGCC互換のラッパーを書く
答えて
ABIの不一致がありますか、またはオブジェクト形式とリンクしたくないだけですか?単なるリンクの問題であれば、関心のある機能を抽出し、逆アセンブルして、リンカが処理できるオブジェクトに再アセンブルすることができます。さらに簡単には、おそらくobjcopy(1)
は両方の形式を話すことができますし、あなたを助けることができますか?
対処するABIの問題がある場合は、同じことを行うことができますが、関数呼び出しが機能するようにABIをサンクするためにシムレイヤーを追加します。そのレイヤーの複雑さと書き込みの難しさは、使用しようとしている関数のインターフェイスによって異なります。
コメントであまり落胆しないでください - それはソフトウェアなので、かなり多く何かが可能です。
私はそれが不可能だと言っていませんでした。もちろん可能です。私はそれが簡単なら驚くだろうと言った。 – jason
私の経験では、このようなことを行うには、分解ツールを新しいツールチェーンが処理できるものに戻すのに少し時間がかかりますが、それはそれです。 ABIをサンクする必要があるなら、それはもう一つの努力ですが、必ずしも難しいとは言えません。もちろん、va_list型を渡すかどうかによって異なります。 –
この時点では、リンクしたくないようです。私は '.lib'ファイルで' ld.exe'を指していて、見つけられないと私に伝えます。これを数時間前から調べてみると、実際にファイルが表示されていないためではなく、有用なファイルが表示されないためです。しかし、訂正は大歓迎です。 –
- 1. * .dll * .a * .lib * .defとVisualStudioとgccの互換性
- 2. dddプロジェクトの周りのwcfラッパー
- 3. Marklogic Rest-API lib&models xqueryの互換性
- 4. gccとのlibstdC++前方互換性
- 5. GCCとLLVMとの互換性
- 6. Cythonを使ってC Structの周りに完全なPythonラッパーを書くには?
- 7. 私のケースに「ラッパー」を書く方法
- 8. IPythonシェルのラッパーを書くには?
- 9. python:サードパーティのクラスにラッパーを書く
- 10. 既存のAPIの周りにWeb APIラッパーを作成する
- 11. 文書のサブストリングの周りにボックスを描く
- 12. GCC 7.1.1 RISCVコンパイル(リンク)エラー:互換性がありませんABI
- 13. MagickWand lib:ファイルの代わりにバッファに書き込む
- 14. パスカルで実装された.libのラッパー
- 15. GCC互換性のないポインタ型(typedefを使用)
- 16. jQueryで他の2つのdivの周りにラッパーdivを作成します
- 17. 共有メモリlibとlinuxとwindowsとの互換性C++
- 18. ジャー耳/ libにあるファイルの代わりのWEB-INF/lib
- 19. JMeter JMXファイルの互換性
- 20. scalatestの "it"キーワードの周りにラッパーを構築する方法は?
- 21. NUnit、MbUnit、xUnitなどのテストフレームワークの周りにラッパーを作成できますか?
- 22. お互いに変換を持つ別々のファイルに2つのクラスを書く?
- 23. LLVM-gccのエラー:</p> <p>$ LLVM-gccをtest.cの</p> <p>互換性のないプラグインのバージョン:互換性のないプラグイン
- 24. を取り除く "gccの - は/ usr/binに/ LD:警告LIBが見つかりません"
- 25. 共有ライブラリとSTLオブジェクトとのGCC互換性
- 26. スピナーの周りに境界を置く
- 27. 図形の周りに枠を描く
- 28. ポリゴンの周りにグラデーションベベルを描く
- 29. 互換性のないオプションのgcc警告を無効にする
- 30. freetype lib新しいバージョンは古いコードと互換性がありません
もしあなたがヘルカリアンの努力なしにこれを取り除くことができれば、私はショックを受けます。 – jason
元のSDKには、おそらく5~10の機能しかありません。私は、異なるコンパイラが互換性のないものになっているのかどうか分かりません。 –
違いはありません。言語仕様がコンパイラに任せている実装の詳細との違い、呼び出し規約との相違点などがあります。 – jason