0

Linuxのダイナミック共有オブジェクトライブラリは、Windowsのdllとほぼ同じです。それは私がオンラインで見つけたものです。ただし、いくつかの違いがあり、ここで説明します。アーキテクチャ上、共有オブジェクト(SO)とダイナミックリンクライブラリ(DLL)の違いは何ですか?

それから私は混乱しています:

  1. Linuxでは、-sharedを使用してDSOライブラリを作成し、-lmylibとリンクすることができます。しかし、Windowsでは状況が異なります。コードにdllexportを追加する必要があります。リンクできるのは「エクスポートされた」部分だけです(私が正しければ)。dllexportを追加せずにWindowsdllをリンク可能にするオプションはありますか?(関数だけでdllexportを使用しないdllを作成しようとしましたが、これまでのところ、dllexportを使用しないdllは役に立たないということですよね?)

  2. MinGWは何をしますか?私はそれを使用した時代にそれがdllを作成すると思いました。しかし今、MinGW-gcc-sharedによって作成されたライブラリは別のものだと思います。Windows版lib.soですか?MSVS / Intelコンパイラは同様のことを行うことができますか?

クロスプラットフォームの問題があるため、これらを求めています。たとえば、Linuxコードは、Windowsマシンで変更を加えることなくコンパイルできます。しかし、コードを変更せずに(dllexportを追加して).soと同等のコード(MSVSでコンパイル)を使用してdllを作成する場合、それは不可能です。私は正しいですか?

4

1 に答える 1

1

dllexport を追加せずに Windows dll をリンク可能にするオプションはありますか?

いいえ、必要ですdllexport

2番目の質問の意味がわかりません、すみません。

私は正しいですか?

私が間違っている場合は訂正してください。ただし、最初の質問を言い直しています。そうです、あなたは正しいです、あなたはそれをすることはできません. あなたが必要dllexportです。

于 2012-09-22T03:41:51.983 に答える