我有一个c项目,我用Mingw gcc编译器从中生成一个.exe。我需要为labview创建一个dll。我读过很多关于如何做到这一点的文章,但似乎没有人能完整地告诉我这是怎么做到的。
我添加了编译器设置-shared
然后我成功地加载了dll,并在其他C项目和labview中使用了这些函数。
但是,所有函数在labview中都是可见的,我没有添加
__declspec(数据链路端口)
我被告知要这样做,例如在明威网站上。
我做得对吗,还是有什么地方可能出错?

最佳答案

在gcc中,默认情况下导出所有符号(函数)。这不是Visual Studio的情况,大多数指南都基于visualstudio。
但是,可以通过禁用默认导出来强制控制导出的符号。这可以通过传球来完成。

-fvisibility=hidden

每次调用编译器。然后用标记导出函数。
__attribute__ ((dllexport))

就像你用德克斯派克一样。
这样做是有好处的,下一页将对此进行更好的解释。https://gcc.gnu.org/wiki/Visibility
编辑:我看到使用mingw可以稍微改变这一点。
如果将-no undefined和--enable runtime pseudo reloc选项传递给链接器,则不必将dllimport或dllexport属性添加到生成DLL的源代码中;默认情况下,所有函数都会自动导入/导出,就像在unices中一样。
发件人:http://www.mingw.org/wiki/sampledll
您是否正在将这些标志传递给链接器?

关于c - 为Labview创建DLL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29487515/

10-13 03:00