gpt4 book ai didi

c++ - 为cpp创建一个没有命名空间的dll

转载 作者:太空宇宙 更新时间:2023-11-04 14:02:09 24 4
gpt4 key购买 nike

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

最佳答案

Afaik I have to put the functions into a class and a namespace if another cpp-program wants to use them.

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

总结:

  • 如果您从 dll 中导出简单的 C 函数,这将始终有效。
  • 如果你从命名空间导出类或其他东西,这将如果其他 .exe/.dll 是用相同版本的编译器。如果不是 - 这取决于。

关于LoadLibrary:当你不知道前面的DLL名称或这个DLL中的函数名称,或者当你不想加载这个DLL时,应该使用它你的过程的开始。否则(简单情况)将您的可执行文件与该 DLL 的 implib 链接起来。这非常适用于简单的 c 函数。 LoadLibrary 应该在直接链接由于某种原因不好时使用。

关于c++ - 为cpp创建一个没有命名空间的dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18835272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com