Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译C和C++; 我有一个用C编写的程序,我需要使用C++编写的库。我与automake&friends在KDevelop中编译了我的C程序。我怎样才能把所有的东西都编译在一起??因为我想在我的C程序中调用一些KDIS函数 提前感谢。可以帮助您理解如何在应用程序中混合C和C++代码。_C++_C_Compilation - Fatal编程技术网

编译C和C++; 我有一个用C编写的程序,我需要使用C++编写的库。我与automake&friends在KDevelop中编译了我的C程序。我怎样才能把所有的东西都编译在一起??因为我想在我的C程序中调用一些KDIS函数 提前感谢。可以帮助您理解如何在应用程序中混合C和C++代码。

编译C和C++; 我有一个用C编写的程序,我需要使用C++编写的库。我与automake&friends在KDevelop中编译了我的C程序。我怎样才能把所有的东西都编译在一起??因为我想在我的C程序中调用一些KDIS函数 提前感谢。可以帮助您理解如何在应用程序中混合C和C++代码。,c++,c,compilation,C++,C,Compilation,也可以查看堆栈溢出问题,我相信这就是你需要的。 < P>如果你需要调用C++函数,这些函数没有被声明为“代码>外”C”/代码>,那么你必须自己从C++程序中这样做。您可以在项目中创建一个C++文件,它将在您的项目中使用的代码>外部“C”//Cube函数中封装所有需要的库函数。你必须告诉AutoToo工具你使用C和C++。文件扩展名应该足以决定哪个是哪个 给你一个例子,考虑下面的 MyEavio,cc/Cuff>为C++编写的一些 LabMooth的绑定: #include <libmagi


也可以查看堆栈溢出问题,我相信这就是你需要的。

< P>如果你需要调用C++函数,这些函数没有被声明为“代码>外”C”/代码>,那么你必须自己从C++程序中这样做。您可以在项目中创建一个C++文件,它将在您的项目中使用的代码>外部“C”//Cube函数中封装所有需要的库函数。你必须告诉AutoToo工具你使用C和C++。文件扩展名应该足以决定哪个是哪个

给你一个例子,考虑下面的<代码> MyEavio,cc/Cuff>为C++编写的一些<代码> LabMooth</代码>的绑定:

#include <libmagic/magic.hh>
extern "C" {
  int doMagic() {
    magic::Wizard w("foo", 42);
    magic::Result res = w.doMagic();
    return res.getResultCode();
  }
}
mymagic.cc
中,您将更加明确:

struct magicValue {
    magic::value v;
    magicValue(magic::value val) : v(val) { }
};
magicValue* createMagic() {
    return new magicValue(magic::value("foo"));
}
void destroyMagic(magicValue*) {
    delete magicValue;
}

库为您提供了什么类型的接口?C还是C++?所以我应该用外部的“C++中的所有函数”创建一个Meal.C。但这些函数的参数是C++ +????达尼:如果KDIS不提供C接口,那么你需要创建一个C接口。如何实现这一点取决于您,但通常您会发现自己定义了C中的不透明指针类型,以引用C++中的对象类型,并编写了许多形式的函数:代码< >返回类型FooSoad方法(Foo* Soad,其他ARGs…){返回->方法(其他ARGS…);}。但我补充了一些例子,希望这能澄清问题。另外,看看SunReFothe Stand的链接,它们似乎有更多的细节,不仅可以调用函数,而且可以在C和C++之间以各种方式传递数据。@ StestJeSopp,如果你愿意,可以自由编辑答案,并包括你的例子。
struct magicValue {
    magic::value v;
    magicValue(magic::value val) : v(val) { }
};
magicValue* createMagic() {
    return new magicValue(magic::value("foo"));
}
void destroyMagic(magicValue*) {
    delete magicValue;
}