Linux 上的动态共享对象库大约等于 Windows 中的 dll。这是我在网上找到的。但是有一些区别,这里解释一下:在架构上,共享对象 (SO) 和动态链接库 (DLL) 有什么区别?
然后我很困惑:
在 linux 中,可以使用 -shared 创建一个 DSO 库,然后与 -lmylib 链接。但在 Windows 中,情况有所不同。必须将 dllexport 添加到代码中。只有“导出”的部分可以链接(如果我是正确的)。是否可以在不添加 dllexport 的情况下使 windows dll 可链接?(我试图制作一个只有函数而没有 dllexport 的 dll,但到目前为止我能说的是没有 dllexport 的 dll 是没用的,对吧?)
MinGW 是做什么的?我认为它在我使用它的时候会创建 dll。但现在我认为由 MinGW-gcc -shared 创建的库是另一回事。是windows版本的lib.so吗?MSVS/intel 编译器可以做类似的事情吗?
我问这些是因为跨平台问题。例如,可以在 windows 机器上编译一个 linux 代码而无需任何更改。但是如果想用相当于.so的代码(用MSVS编译)来创建一个dll而不修改代码(添加dllexport),那是不可能的。我对吗?