gpt4 book ai didi

c++ - "Undefined reference to"链接目标文件时出错

转载 作者:可可西里 更新时间:2023-11-01 18:19:50 26 4
gpt4 key购买 nike

<分区>

我意识到这个问题已经以多种方式提出,包括 this very comprehensive answer但我看了很多,并尝试修复我的错误,但无济于事。

我正在使用 .cpp 和 .c 文件来创建程序。我用 g++ 编译了所有文件,它似乎没有更多的链接错误,尽管它给了我一堆与 C 语法相关的 C++ 错误。这是我使用的命令:

g++ -o program main.cpp /data/*.c -l[...libs]

main.cpp 调用.c 文件中的函数。然后我明白了不应该尝试用一个编译器编译 .c 和 .cpp 文件,而是对一个编译器使用 gcc,对另一个编译器使用 g++,然后简单地链接目标文件。

所以我这样做了(.c 文件是库的一部分,并且已经有 .o 文件)

g++ -c main.cpp
g++ -o program main.o /data/*.o -l[..libs]

但是在这里,对于从 main.cpp 调用到预编译的 .c 文件的函数,我会得到“ undefined reference ”错误,这是我以前没有得到的错误。

有人能帮忙吗?还是我可能需要提供更多信息?

编辑(更深入的代码摘录,我试图简化,否则这将无法阅读,但如果我仍然需要添加内容,请告诉我,我会尝试删除不必要的代码):

main.cpp :

#include "header.h"

int main(int argc, char** argv) {
string s1 = argv[2];
fn1(s1)
}

标题.h

void fn1(string s1)

myc文件.c

#include "header.h"

void fn1(string s1){
fprintf(stdout, " you entered %s", s1);
fflush(stdout);
}

回答:

@Smeehey 帮助我找到了解决方案,实际上我仍然在我使用的 .hpp 文件中包含旧 header 。但核心解决方案确实是使用外部 C{}。

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