質問: Linuxで.dllファイルを使用してプログラムをコンパイルすることは可能ですか?
これがどこに行くのか:この.dllは、サードパーティからのいくつかのプロプライエタリソフトウェアにphp拡張機能を書き込むために使用されます。
背景と研究:
proprietary.lib
というライブラリが提供されました。 .lib
拡張機能を今まで見たことがなかったので、興味があったので、次のように入力しました。
file proprietary.lib
出力は次のとおりです。
proprietary.lib: current ar archive
調査したところ、ar
が多かれ少なかれtar
であることがわかりました(実際、tar
は、ほとんどの場合ar
に取って代わったと思います* nix環境)。
ar
のマンページを調べたところ、t option
が表示され、そのアーカイブの内容の一覧表が表示されています。涼しい。だから私はタイプします:
ar t proprietary.lib
そして得る:
proprietary.dll
proprietary.dll
... (snip X lines) ...
ar
ファイル(Debianパッケージはar
ファイル、fwiw)を抽出して、その内容に対してfile
を実行してみてください。
翻訳なしでWindows DLLを使用することはできません。 Linuxでネイティブに動作することがわかっている唯一のDLLファイルはMonoでコンパイルされています。
誰かがコード化する独自のバイナリライブラリを提供した場合は、それがターゲットアーキテクチャ用にコンパイルされていること(am ARMバイナリをx86システムで使用することなど)と、Linux用にコンパイルされていることを確認する必要があります。 。
言われていること...幸運。ドキュメントandソースがあるサードパーティライブラリに対するプログラミングは嫌いです。
最近の開発により状況が変わった可能性があります。Linuxには loadlibrary 関数があり、Windows DLLをロードして関数を呼び出すことができます。
したがって、.dll
ファイルが実際にはWindows DLLである場合、ソフトウェアでそれを使用する方法が見つかるかもしれません。
.dllファイルは通常、Windows共有ライブラリです。 (Linux上の誰かが通常のLinuxライブラリを構築し、何らかの理由でそれを.dllと呼んでいる可能性もあります。)
Wine を使用してそれらに対してリンクできる可能性があります。これに対するサポートは実験的なものでした-私はその現在の状態を知りません。
はい、私たちはワインの助けを借りてdllを使用することができます。 Linuxにwine64をインストールするだけです
Sudo apt-get install wine64
通常DLLファイルはWindowsのリンクライブラリであるため、Linuxで直接実行することはできませんが、.NET Coreを使用するLinux専用のDLLファイルをコンパイルすることは可能です。