Linuxのダイナミック共有オブジェクトライブラリは、Windowsのdllとほぼ同じです。それは私がオンラインで見つけたものです。ただし、いくつかの違いがあり、ここで説明します。アーキテクチャ上、共有オブジェクト(SO)とダイナミックリンクライブラリ(DLL)の違いは何ですか?
それから私は混乱しています:
Linuxでは、-sharedを使用してDSOライブラリを作成し、-lmylibとリンクすることができます。しかし、Windowsでは状況が異なります。コードにdllexportを追加する必要があります。リンクできるのは「エクスポートされた」部分だけです(私が正しければ)。dllexportを追加せずにWindowsdllをリンク可能にするオプションはありますか?(関数だけでdllexportを使用しないdllを作成しようとしましたが、これまでのところ、dllexportを使用しないdllは役に立たないということですよね?)
MinGWは何をしますか?私はそれを使用した時代にそれがdllを作成すると思いました。しかし今、MinGW-gcc-sharedによって作成されたライブラリは別のものだと思います。Windows版lib.soですか?MSVS / Intelコンパイラは同様のことを行うことができますか?
クロスプラットフォームの問題があるため、これらを求めています。たとえば、Linuxコードは、Windowsマシンで変更を加えることなくコンパイルできます。しかし、コードを変更せずに(dllexportを追加して).soと同等のコード(MSVSでコンパイル)を使用してdllを作成する場合、それは不可能です。私は正しいですか?