为 Labview 创建 DLL
Creating a DLL for Labview
我有一个 c 项目,我使用 Mingw gcc 编译器从中创建了一个 .exe。我需要为labview制作一个dll。我已经阅读了不同的位置如何做到这一点,但 none 似乎完全告诉我这是如何完成的。
我添加了编译器设置 -shared
然后我能够成功加载 dll 并在其他 C 项目和 labview 中使用这些函数。
但是所有函数在 labview 中都是可见的,我还没有添加
__declspec(dllexport)
我在 Mingw 网站上被告知要这样做。
我做对了吗,还是这里可能出了什么问题?
在gcc中,默认导出所有符号(函数)。大多数指南都基于 Visual Studio,情况并非如此。
然而,可以通过禁用默认导出来强制控制导出的符号。这可以通过传递来完成。
-fvisibility=hidden
对编译器的每次调用。并随后用 标记导出的函数。
__attribute__ ((dllexport))
就像您使用 declspec 一样。
这样做有好处,下一页对此有更好的解释。 https://gcc.gnu.org/wiki/Visibility
编辑:我看到使用 mingw 稍微改变了这一点。
If you pass the -no-undefined and --enable-runtime-pseudo-reloc options to the linker, you don't have to add dllimport or dllexport attributes to the source code that the DLL is made with ; all functions are imported/exported automatically by default, just like in unices.
发件人:http://www.mingw.org/wiki/sampledll
您是否将这些标志中的任何一个传递给链接器?
我有一个 c 项目,我使用 Mingw gcc 编译器从中创建了一个 .exe。我需要为labview制作一个dll。我已经阅读了不同的位置如何做到这一点,但 none 似乎完全告诉我这是如何完成的。
我添加了编译器设置 -shared
然后我能够成功加载 dll 并在其他 C 项目和 labview 中使用这些函数。
但是所有函数在 labview 中都是可见的,我还没有添加
__declspec(dllexport)
我在 Mingw 网站上被告知要这样做。
我做对了吗,还是这里可能出了什么问题?
在gcc中,默认导出所有符号(函数)。大多数指南都基于 Visual Studio,情况并非如此。
然而,可以通过禁用默认导出来强制控制导出的符号。这可以通过传递来完成。
-fvisibility=hidden
对编译器的每次调用。并随后用 标记导出的函数。
__attribute__ ((dllexport))
就像您使用 declspec 一样。 这样做有好处,下一页对此有更好的解释。 https://gcc.gnu.org/wiki/Visibility
编辑:我看到使用 mingw 稍微改变了这一点。
If you pass the -no-undefined and --enable-runtime-pseudo-reloc options to the linker, you don't have to add dllimport or dllexport attributes to the source code that the DLL is made with ; all functions are imported/exported automatically by default, just like in unices.
发件人:http://www.mingw.org/wiki/sampledll
您是否将这些标志中的任何一个传递给链接器?