gpt4 book ai didi

c++ - autotools undefined reference 错误

转载 作者:行者123 更新时间:2023-11-30 02:49:56 25 4
gpt4 key购买 nike

我的项目结构如下:

ProjName/
| configure.ac
| Makefile.am
| src/
| Main.cpp
| Main.h
| Extra.cpp
| Extra.h

Main 和 Extra 都是同一命名空间 MyNamespace 中的类。即使 Main.h 包含 Extra.h 我也收到链接器错误:

in function MyNamespace::Main::Main():
undefined reference to MyNamespace::Extra::Extra()

我确保所有类都包含在

namespace MyNamespace { ... }

以及将 using namespace MyNamespace 添加到 Main.cpp 并且两个类的构造函数都是正确的。

似乎唯一可以解决这个问题的方法是将 #include "Extra.cpp" 添加到 Main.cpp 但这只会破坏使用 header 的目的文件,当我向项目添加更多文件时会变得非常乏味。

编辑:

Makefile.am 看起来像:

bin_PROGRAMS= ProjName

ProjName_CPPFLAGS= -I$(top_srcdir) -I$(top_srcdir)/src
ProjName_SOURCES= src/Main.cpp Main.h

我的项目使用 Ogre3D 库,因此还有一些 Ogre 特定的东西。我已经尝试将 cpp 和头文件添加到 ProjName_SOURCES 并运行 ./bootstrap && ./configure && make 但随后出现错误,例如:

No rule to make .deps/src/ProjName-Extra.Po

或者类似的东西(我现在正在打电话)。

最佳答案

您没有正确指定源文件。尝试:

ProjName_SOURCES = src/Main.cpp src/Extra.cpp

关于c++ - autotools undefined reference 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20857375/

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