gpt4 book ai didi

c++ - 使用现有 C 程序编写 Qt 程序时未找到符号

转载 作者:行者123 更新时间:2023-11-30 16:39:19 26 4
gpt4 key购买 nike

我用 C 语言(使用 GNU make)编写了一个 ftp 客户端,现在想使用 Qt 为其编写一个 GUI。

构建时出现错误:

error: symbol(s) not found for architecture x86_64
linker command failed with exit code 1 (use -v to see invocation)
Undefined symbols for architecture x86_64:
"showHelpMsg()", referenced from:
_main in main.o

我的main.cpp看起来像这样:

include "client.h" 
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
ftpClient w;
w.show();
showHelpMsg();
return a.exec();
}

client.h:

#include"common.h"
#include"handler.h"
#include"util.h" //These headers works fine while using gnu make
void showHelpMsg();

客户端.c:

include "client.h" 
void showHelpMsg()
{
//....
}

还有我的project.pro:(由Qt自动生成)

SOURCES += main.cpp\
ftpclient.cpp \
client.c \
common.c \
handler.c \
util.c

HEADERS += ftpclient.h \
client.h \
common.h \
handler.h \
util.h

作为引用,这是我以前的 makefile:

objects = client.o handler.o util.o common.o

server : $(objects)
cc -Wall -o client $(objects)

.PHONY : clean
clean :
rm client $(objects)

最佳答案

尝试将 client.h 更改为:

#ifdef __cplusplus
extern "C" {
#endif
#include"common.h"
#include"handler.h"
#include"util.h"
void showHelpMsg();
#ifdef __cplusplus
}
#endif

问题可能是 C++ 编译器预期 showHelpMsg 是一个具有损坏名称的 C++ 函数,而 C 编译器仅生成具有正常名称的正常 C 函数。

关于c++ - 使用现有 C 程序编写 Qt 程序时未找到符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47087731/

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