【发布时间】:2012-08-15 14:21:54
【问题描述】:
我的视觉工作室中有 2 个项目解码器和解码器。一个有 C 代码,另一个有 C++ 代码,分别使用 stl。如何在解码项目中的 c 代码中实例化 c++ 类?
for e.g.
//instantiating object
reprVectorsTree *r1 = new reprVectorsTree(reprVectors1,8);
//using one of its function
r1->decode(code);
为此我需要做什么?
如何访问其他项目的文件?
如何利用 C 文件中现有的 c++ 代码?
--------编辑---------- 我有这样的课
class Node//possible point in our input space
{
public:
std::vector<float> valuesInDim;//values in dimensions
std::vector<bool> code;
Node(std::vector<float>value);
Node::Node(float x, float y);
Node::Node(std::vector<float> value,std::vector<bool> binary);
};
如何在 c++ 中使用上述类? 如果 C 只允许结构,我如何将其映射到结构?
【问题讨论】:
-
您的 C 代码是否使用 C++ 编译器进行编译?如果您可以用 C++ 编译所有内容,那将是最简单的解决方案。
-
那么,您是在问如何在不同的编程语言中使用来自编程语言的代码?
-
您可以使用
extern "C"在 C++ 中创建一种包装 DLL,用于调用类并将类实例包装在结构中的所有内容(我不知道 DLL 是否可以做到这一点,我一个对 DLL 一无所知的 Linux 人)。 -
@Lanaru:是的,但这比询问如何在 PHP 中使用 Lisp 对象或类似的东西更可行。 C 和 C++ 非常相似,大多数 C 和 C++ 编译器都让它们(大部分)共享一个 ABI。让 C 和 C++ 交互比大多数其他组合要容易得多。
-
calling c++ code from c 的可能重复项