我正在使用CodeW IDE与MingW,我有一个持续的问题 有以下类型的错误。 (文件||消息)
obj\CEntity.o(.text+0x71a) || In function `ZN7CEntity6OnMoveEff':
OR
obj\CArea.o(.bss+0x0) || In function `ZNSt6vectorI5CTileSaIS0_EEaSERKS2_':
obj\CApp_OnCleanup.o(.bss+0x0):C:\DevCpp\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\include\c++\3.4.2\bits\vector.tcc || first defined here
请注意,它将位置作为某种obj文件,因此我不能 看看我的代码在哪里。
我的C ++正在改进很多,但我仍然不是很了解 编译器如何工作,我无法弄清楚可能导致的原因 问题或如何解决这样的问题。与代码不同 这个问题真的很难谷歌,因为名字刚刚出现 加扰。
希望有人可以提供帮助,因为它阻碍了我,我找不到 或找出解决办法!
(我决定不发布我的代码,因为它是很多相互关联的文件而我没有 知道错误的位置,但我正在尝试按照http://www.sdltutorials.com/sdl-tutorial-basics上的教程。我能开始工作的前几个 但后来似乎总是失败。这显然是我做错了 因为当我使用它时,它可以工作。)
答案 0 :(得分:0)
许多GCC发行版(例如我使用的MinGW发行版)都带有一个实用程序名称c++filt
,它会将C ++受损的名称变成更接近源代码声明的内容(我认为您的错误消息遗漏了一些下划线) ):
C:\temp>c++filt __ZN7CEntity6OnMoveEff
CEntity::OnMove(float, float)
MSVC附带了类似的实用程序:undname
但是,您可能想要更新您正在使用的MinGW。我在错误输出中直接返回到MinGW 3.4.5(同样对于MSVC回到VC ++ 6),我得到了很好的解码名称:
class CEntity {
public:
void OnMove(float, float);
};
int main()
{
CEntity ent;
ent.OnMove(1., 2.);
}
使用MinGW 3.4.5编译:
C:\temp>g++ -o test.exe test.cpp
C:\...\ccwlXEih.o:test.cpp:(.text+0x43): undefined reference to `CEntity::OnMove(float, float)'