包装C++代码的问题
Problems with wrapping a C++ code
为了尝试在C中包装C++代码,我使用了以下内容:header.h
#ifdef __cplusplus
extern "C"
#endif
void func();
来源.cpp
#include "header.h"
#include <iostream>
extern "C" void func()
{
std::cout << "This is C++ code!" << std::endl;
}
和source.c
#include "header.h"
int main()
{
func();
}
为了编译和链接,我使用了以下序列:
g++ -c source.cpp
gcc source.c source.o -o myprog
我得到的错误是:ence到std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
source.cpp:(.text+0x1c): undefined reference to
std::basic_stream>::operator<lt;(std::basic_stream>&(*((std:;basic_stream>>('source.o:在函数__static_initialization_and_destruction_0(int, int)':
source.cpp:(.text+0x45): undefined reference to
std::ios_base::Init::Init((中'source.cpp:(.text+0x4a(:对std::ios_base::Init::~Init()'
source.o:(.eh_frame+0x12): undefined reference to
__gxx_personality_v0'的未定义引用collect2:ld返回1退出状态
如何编译并运行这个简单的代码?它应该成为我未来的基础发展
也与g++链接:
g++ -c source.cpp
g++ source.c source.o -o myprog
或者更好:
g++ -c source.cpp -o source_cpp.o
gcc -c source.c -o source_c.o
g++ -o myprog source_cpp.o source_c.o
最好避免使用公共前缀源。{cpp,c},因为它会引起混淆。
您仍然需要使用C++链接器进行链接:
gcc -o source-c.o source.c
g++ -o source-p.o source.cpp
g++ -o myprog source-c.o source-p.o
您的C++对象文件将需要解析C++库中的符号,只有C++链接器才会自动提取这些符号。(或者,您可以手动为C链接器指定库。(
你不能这样做,你可以用gcc编译C代码,然后用g++将它与C++对象链接,通过extern关键字引用C对象中定义的符号,但你不能做相反的
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 编译包含字符串的代码时遇到问题
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 在java中解决这段代码时面临循环中的问题
- 将鼠标悬停在问题上时与预期">"相关的代码错误
- 代码在我的计算机上运行良好,但是在将其提交给coursera时遇到未知的信号11问题
- 读取最后一行代码算法 - c++ 时出现问题
- 这个带有模板<类 Vector 的C++代码片段有什么问题>
- Xcode 语义问题引用或以前定义的代码
- 需要以下代码的帮助,下面的代码有什么问题
- 我无法在Visual Studio代码中使用CIN输入答案,它说输入您的年龄,但它说只读文本编辑器如何解决这个问题?
- 如何在代码问题中解决此问题 代码强制
- C 代码问题?编译器问题?代码块
- C - 如果语句问题.代码将不会运行其他,否则
- 简单的NOOB C 输入/输出问题:代码错误
- NDK:0xdeadd00d时虚拟机中止和致命信号 11 (SIGSEGV) 的问题(代码 = 1)
- 编译问题 - 代码 C2129
- c++问题代码段
- 模板作用域问题代码无法编译
- 基本 CUDA 程序的问题.代码或编译器