我有一个c项目,我使用Mingw gcc编译器从中创建.exe。我需要为labview制作一个dll。我已经阅读了各种各样的地方,但似乎没有人知道如何做到这一点。
我添加了编译器设置-shared
然后我能够成功加载dll并在其他C项目和labview中使用这些功能。
然而,所有功能在labview中都可见,我还没有添加
__ declspec(dllexport)的
我告诉他在Mingw网站上做的事。
我是否正确地完成了这项工作,或者是否存在可能出错的地方?
答案 0 :(得分:2)
在gcc中,默认情况下会导出所有符号(函数)。对于大多数指南所基于的Visual Studio,情况并非如此。
但是,可以通过禁用默认导出来强制控制导出的符号。这可以通过传递来完成。
-fvisibility=hidden
每次调用编译器。随后标记导出的函数。
__attribute__ ((dllexport))
就像你使用declspec一样。 这样做有好处,在下一页中有更好的解释。 https://gcc.gnu.org/wiki/Visibility
编辑:我看到使用mingw改变了一点。
如果将-no-undefined和--enable-runtime-pseudo-reloc选项传递给链接器,则不必将dllimport或dllexport属性添加到创建DLL的源代码中;默认情况下,所有功能都会自动导入/导出,就像在unices中一样。
来自:http://www.mingw.org/wiki/sampledll
您是否将任何这些标志传递给链接器?