gpt4 book ai didi

c++ - 包装 C++ 代码的问题

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:04 26 4
gpt4 key购买 nike

为了尝试在 C 中包装 C++ 代码,我使用了以下内容:标题.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

我得到的错误是:进入 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_ostream >::operator<<(std::basic_ostream >& (*)(std::basic_ostream >&))'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 个退出状态

如何让这段简单的代码编译运行?它应该作为我 future 的基础发展。

最佳答案

也与 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

最好避免使用公共(public)前缀 source.{cpp,c},因为它会引起混淆。

关于c++ - 包装 C++ 代码的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7956348/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com