我正在写论文,我在C代码中使用C++函数有问题.我搜索了解决方案,但我找到了很多,但无论如何都没有用.请再向我解释一下.
要快我有类似下面后gcc main.c -o main
,我得到undefined reference to 'cppfun'
cpp.h:
#pragma once #ifdef __cplusplus extern "C" { #endi void cppfun(); #ifdef __cplusplus } #endif
cpp.cpp:
#include#include "cpp.h" void cppfun() { printf("cpp_fun"); }
main.c中:
#include#indlude "cpp.h" int main(int argc, char *argv[]) { cppfun(); return 0; }
Cheers and h.. 6
组合C和C++时,应编译包含该main
函数的转换单元,如C++.不相反.这是一个FAQ.
未定义的引用通常是因为您没有在翻译单元中链接丢失的内容.您声明的构建命令是
gcc main.c -o main
虽然它应该是例如
gcc -c main.c g++ -c cpp.cpp g++ cpp.o main.o -o main
除非提到,主翻译单元应该是C++.
组合C和C++时,应编译包含该main
函数的转换单元,如C++.不相反.这是一个FAQ.
未定义的引用通常是因为您没有在翻译单元中链接丢失的内容.您声明的构建命令是
gcc main.c -o main
虽然它应该是例如
gcc -c main.c g++ -c cpp.cpp g++ cpp.o main.o -o main
除非提到,主翻译单元应该是C++.