为cpp创建没有命名空间的dll

时间:2013-09-16 18:57:33

标签: c++ windows dll

目前我正在写一个cpp-DLL。 Afaik如果另一个cpp程序想要使用它们,我必须将函数放入类和命名空间。但我也希望将DLL与Labview一起使用。 Labview只识别它们是免费的功能,例如既不在命名空间也不在类中。我怎样才能在我的DLL中实现这个?目前,我已经设置了#define-variable。如果设置了这个变量,函数被包含在命名空间和类中,如果没有,那么它们是免费的,但是我必须编译整个东西两次,我得到两个单独的DLL文件。那么,如果我只需要两个应用程序的DLL文件,我该怎么办? (请不要告诉我两次写函数,管理费用更差,我之前尝试过这个)。 或者,我不得不在不使用命名空间时通过LoadLibrary()调用DLL? 非常感谢你!

1 个答案:

答案 0 :(得分:0)

  

Afaik如果另一个cpp程序想要使用它们,我必须将函数放入类和命名空间。

这是完全错误的。你根本不需要这样做。相反,DLL最初是作为C函数库引入的。 C ++使用受损的名称来表示名称空间/类和参数类型。这方面没有标准。不同的编译器使用自己的方案。

总结:

  • 如果您从dll导出简单的C函数,这将始终有效。
  • 如果从命名空间导出类或其他内容,则会这样做 如果使用相同版本的其他.exe / .dll编译,肯定会工作 编译器。如果不是 - 这取决于。

关于LoadLibrary:当您不知道DLL的名称或此DLL中的函数名称或者您不希望在开头加载此DLL时,应该使用它处理。否则(简单情况)将您的可执行文件与该DLL的implib链接。这非常适用于简单的c函数。当直接链接由于某种原因不好时,应该使用LoadLibrary

相关问题