g++ 链接问题:对函数的未定义引用

2024-03-14

我使用 CMake 和 Visual C++ 构建 HyDE 库。然后,仍然在 VC++ 中,我能够成功创建代码并构建链接到 HyDE.lib 和 HyDE 头文件的可执行文件。

然后我发现,为了与我公司的其他人一起工作,最好在 Eclipse CDT 中进行开发。由于对 Eclipse CDT 知之甚少,我创建了一个默认的 hello world 项目,删除了代码,然后将所有代码转储到 src 文件夹中。然后我尝试更改包含和库路径以及库以镜像 VC++ 中的工作内容。此时一切似乎都已编译,但我在链接时遇到错误:

/cygdrive/c/EclipseWorkspace/425HyDE/Debug/../src/FS5HyDE.cpp:16:对“HyDEAPI::HyDE::HyDE(HyDESystemModel::SystemModel*, bool)”的未定义引用

(类似的错误还有很多,都与 HyDE 方法有关。)以下是在命令行中运行的内容:

g++ -L"C:\Progra~1\boost\boost_1_42\lib" -L"C:\EclipseWorkspace\HyDE" -o"425HyDE.exe" ./src/Adapter_FS5HyDE.o ./src/EPSCommands.o ./ src/EPSCurrentSensor.o ./src/EPSFault.o ./src/FS5HyDE.o ./src/HyDEObservation.o ./src/MCDH.o ./src/MCDH_Module.o ./src/PDBComponent.o ./src /PowerSystem.o ./src/Program.o ./src/SSPCComponent.o ./src/Telemetry.o ./src/TelemetryReport.o -l:libboost_thread-vc90-mt-gd-1_42.lib -lHyDE

这绝对不是库排序问题,因为我还有其他排序(只有两个)。是否有可能在 VC++(使用 Windows 编译器)中编译 HyDE.lib 并用 g++ 编译我的程序存在问题? Eclipse CDT 自动生成 makefile 的方式是否存在问题?还有其他想法吗?

(注意:似乎还有很多关于 SO 的其他问题也有类似的问题,但在阅读完它们之后,我还没有找到一个可以解决我的问题的问题。)


经典的缺少符号错误。哪个源文件定义:

HyDEAPI::HyDE::HyDE(HyDESystemModel::SystemModel*, bool)' ?

该文件是否已添加到编译中?你能在你粘贴的命令行上找到它吗?

如果此符号属于外部库,则在添加目录路径后-L,您可以使用以下命令添加要与程序链接的特定库的名称-l.

我建议您尝试将 HyDE.lib 的目录路径添加到编译命令中,后跟库名称,如下所示:

 -L"C:\path_to_hyde_library" -l:HyDE.lib

然后告诉我们发生了什么。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

g++ 链接问题:对函数的未定义引用 的相关文章

随机推荐