【发布时间】:2014-06-29 23:56:39
【问题描述】:
我知道有很多与此相关的 SO 问题,但我遇到的问题都没有解决我的问题。就这样吧。
我有一个C++ 文件和方法:
MyClass.cpp
extern "C" {
#include "C_methods.h"
}
void MyClass::run_c_method_1()
{
std::string filename_1 = <from somewhere else>;
std::string filename_2 = <from somewhere else>;
c_method_1(filename_1.c_str(), filename_2.c_str());
}
C_methods.h
#ifndef Project_C_methods_h
#define Project_C_methods_h
int c_method_1(char* filename1, char* filename_2);
#endif
C_methods.c
#include "C_methods.h"
int c_method_1(char* filename1, char* filename_2) {
/* Do some stuff */
return 0;
}
我正在 OSX 的 Xcode 上构建/运行它,编译器告诉我:
No matching function call to 'c_method_1'.
对我来说,这毫无意义。从其他 SO 答案来看,我将标头 #include "C_methods.h" 包裹在其中的 extern 似乎应该告诉编译器这些函数存在,并在 C 中编译。
有谁知道我在哪里可能会出错?我被难住了。
【问题讨论】:
-
尝试删除
extern "C"并使用__BEGIN_DECLS/__END_DECLS -
char *不是const char *。如果发布了完整的错误,会更容易注意到。 -
@chris,我认为你在做某事。我认为这是导致问题的 const 。现在检查。
-
@chris,是的,把这个放在答案中,我会接受。谢谢!