Linux上的动态共享对象库与Windows中的dll大致相同。这就是我在网上找到的。但是有一些差异,这里有解释:Architecturally what is the difference between a shared object (SO) and a dynamic link library (DLL)?
然后我很困惑:
在linux中,可以使用-shared创建DSO库,然后使用-lmylib进行链接。但在Windows中,情况有所不同。必须将dllexport添加到代码中。只能链接“导出”部分(如果我是正确的)。有没有选项可以在不添加dllexport的情况下使windows dll链接? (我尝试使用函数创建一个dll而没有dllexport,但到目前为止我能说的是没有dllexport的dll是没用的,对吗?)
MinGW做什么?我认为它在我使用它的时候创造了dll。但现在我认为由MinGW-gcc -shared创建的库是另外的东西。是windows版本的lib.so吗? MSVS / intel编译器可以做类似的事情吗?
我问这些是因为跨平台问题。例如,可以编译linux代码而无需在Windows机器上进行任何更改。但是如果想要通过使用代码(用MSVS编译)来创建一个dll,它等同于.so而不修改代码(添加dllexport),那是不可能的。我是对的吗?
答案 0 :(得分:1)
是否有选项可以在不添加的情况下使Windows dll链接 DLLEXPORT?
不,您需要dllexport
。
我不知道第二个问题是什么意思,抱歉。
我是对的吗?
如果我错了,请纠正我,但是你正在重述第一个问题。所以是的,你是对的,你做不到。你需要dllexport
。