0

Linux 上的动态共享对象库大约等于 Windows 中的 dll。这是我在网上找到的。但是有一些区别,这里解释一下:在架构上,共享对象 (SO) 和动态链接库 (DLL) 有什么区别?

然后我很困惑:

  1. 在 linux 中,可以使用 -shared 创建一个 DSO 库,然后与 -lmylib 链接。但在 Windows 中,情况有所不同。必须将 dllexport 添加到代码中。只有“导出”的部分可以链接(如果我是正确的)。是否可以在不添加 dllexport 的情况下使 windows dll 可链接?(我试图制作一个只有函数而没有 dllexport 的 dll,但到目前为止我能说的是没有 dllexport 的 dll 是没用的,对吧?)

  2. MinGW 是做什么的?我认为它在我使用它的时候会创建 dll。但现在我认为由 Mi​​nGW-gcc -shared 创建的库是另一回事。是windows版本的lib.so吗?MSVS/intel 编译器可以做类似的事情吗?

我问这些是因为跨平台问题。例如,可以在 windows 机器上编译一个 linux 代码而无需任何更改。但是如果想用相当于.so的代码(用MSVS编译)来创建一个dll而不修改代码(添加dllexport),那是不可能的。我对吗?

4

1 回答 1

1

是否可以在不添加 dllexport 的情况下使 windows dll 可链接?

不,你需要dllexport

我不知道你说的第二个问题是什么意思,对不起。

我对吗?

Correct me if I'm wrong but you're restating your first question. So yes you're right, you can't do that. you need dllexport.

于 2012-09-22T03:41:51.983 回答