【发布时间】:2013-07-29 21:52:52
【问题描述】:
我有一个 DLL 来控制一些用 C++ 编写的外部设备。但是在开发中我使用 ANSI C(不支持 c++),所以我只能用纯 C 语法编译代码。
我想知道是否可以在我的 C 代码中加载用 C++ 编写的 DLL,是否依赖于 DLL 语言?有什么叫做 C++ DLL 或 C DLL 或 C# DLL 的东西吗?
如果是这样,是否意味着我们只能在同一种语言的代码中调用 DLL?我在网上搜索了一下,发现了一些关于在 C++ 环境中调用 C 的内容,他们建议使用 extern C {} 语句。但我认为我的情况正好相反,我需要在 C 中调用 C++,但是我的编译器不支持 C++,我该怎么做呢?
【问题讨论】:
-
有人可能会有更好的答案,但据我所知,您需要在 C++ 代码中使用
extern c {}构造,以免函数名称被破坏。否则,C++ 入口点将几乎不可读。根据编译器/平台的不同,调用约定也可能有所不同。我相信其他人会解决这些问题。 -
@Eric:这听起来对我来说是一个很好的答案......你让它成为一个答案怎么样?
-
如果您需要任何 C++ 运行时支持,那么您的情况就会很糟糕。为什么不能使用 C++ 编译器?
-
问谁给了你 DLL 使用 DLL 的正确方法是什么。
-
我正在使用labview CVI,它是一个纯C编译器,虽然它也支持MSVC并且可以在C++环境中编译,但是因为一切都在服务器上运行,我的IT不会安装任何其他编译器为此:(