当我尝试使用异常[CodeBlocks,C++]时,会导致名称篡改

Get name mangling when I try to use exceptions [CodeBlocks, C++]

本文关键字:C++ 异常 CodeBlocks      更新时间:2023-10-16

我第一次尝试使用异常但即使这是一个非常简单的例子只是无法编译它,我已经看了在几个例子中,并尝试将其编码很多很多不同的方式但我仍然不确定具体在哪里问题是因为我的名字被篡改了不管怎样,当我介绍接球/尝试/投球时这是我的代码,希望它是什么真愚蠢:)

#include "Surface.h"
#include "SDL_Image.h"
using namespace std;
SDL_Surface* surface::Load(string fileName){
   SDL_Surface* loadedSurface = IMG_Load(fileName.c_str());
   if(loadedSurface == 0) throw 0;
   //Convert surface to same format as display
   loadedSurface = SDL_DisplayFormatAlpha(loadedSurface);
   return loadedSurface;
}

#include "GameState.h"
#include "Surface.h"
#include<iostream>
using namespace std;
GameState::GameState(string fileName){
   try{
      stateWallpaper_ = surface::Load(fileName);
   }
   catch(int& e){
      cerr << "Could not load " << fileName << endl;
   }
}

提前感谢您的帮助!

编辑:对不起,我忘了发布错误消息:这是

In function `ZN14GameStateIntroC1Ev':|
-undefined reference to `__gxx_personality_sj0'|
-undefined reference to `_Unwind_SjLj_Register'|
-undefined reference to `_Unwind_SjLj_Unregister'|
In function `ZN14GameStateIntroC1Ev':|
undefined reference to `_Unwind_SjLj_Resume'|
In function `ZN14GameStateIntroC2Ev':|
-undefined reference to `__gxx_personality_sj0'|
-undefined reference to `_Unwind_SjLj_Register'|
-undefined reference to `_Unwind_SjLj_Unregister'|
objReleaseGameStateIntro.o||In function `ZN14GameStateIntroC2Ev':|
C:Program Files (x86)CodeBlocksMinGWbin..libgccmingw323.4.5........includec++3.4.5extnew_allocator.h|69|undefined reference to `_Unwind_SjLj_Resume'|
C:MinGWliblibSDLmain.a(SDL_win32_main.o)||In function `redirect_output':|
UserssloukenreleaseSDLSDL-1.2.15.srcmainwin32SDL_win32_main.c|219|undefined reference to `SDL_strlcpy'|
UserssloukenreleaseSDLSDL-1.2.15.srcmainwin32SDL_win32_main.c|220|undefined reference to `SDL_strlcat'|
UserssloukenreleaseSDLSDL-1.2.15.srcmainwin32SDL_win32_main.c|243|undefined reference to `SDL_strlcpy'|
UserssloukenreleaseSDLSDL-1.2.15.srcmainwin32SDL_win32_main.c|244|undefined reference to `SDL_strlcat'|
C:MinGWliblibSDLmain.a(SDL_win32_main.o)||In function `console_main':|
UserssloukenreleaseSDLSDL-1.2.15.srcmainwin32SDL_win32_main.c|296|undefined reference to `SDL_strlcpy'|
UserssloukenreleaseSDLSDL-1.2.15.srcmainwin32SDL_win32_main.c|301|undefined reference to `SDL_GetError'|
UserssloukenreleaseSDLSDL-1.2.15.srcmainwin32SDL_win32_main.c|312|undefined reference to `SDL_SetModuleHandle'|
C:MinGWliblibSDLmain.a(SDL_win32_main.o)||In function `WinMain@16':|
UserssloukenreleaseSDLSDL-1.2.15.srcmainwin32SDL_win32_main.c|354|undefined reference to `SDL_getenv'|
UserssloukenreleaseSDLSDL-1.2.15.srcmainwin32SDL_win32_main.c|386|undefined reference to `SDL_strlcpy'|
C:MinGWliblibSDLmain.a(SDL_win32_main.o)||In function `cleanup':|
UserssloukenreleaseSDLSDL-1.2.15.srcmainwin32SDL_win32_main.c|158|undefined reference to `SDL_Quit'|
**

从您的错误消息来看,问题与异常无关,而是与您的链接有关。如果使用SDL标头但未链接到SDL库,请使用正确的-L选项。