※ ChatGPTを利用し、要約された質問です(原文:libSDL.aをリンクしたのに参照が見つからない)
libSDL.aをリンクしたのに参照が見つからない
このQ&Aのポイント
g++コマンドでlibSDL.aをリンクしたにもかかわらず、参照が見つかりません。
エラーメッセージには、undefined reference to `_SDL_Delay'という参照エラーが表示されています。
myapp.ccの29行目にある`SDL_Delay`の呼び出しに関連したエラーが発生しているようです。
libSDL.aをリンクしたのに参照が見つからない
以下makeの出力です.
g++ -c -g -Wall --std=c++11 -O3 `sdl-config --cflags` main.cc
g++ -c -g -Wall --std=c++11 -O3 `sdl-config --cflags` myapp.cc
make -C ./util
make[1]: Entering directory `/home/****/####/src/util'
g++ -c -g -Wall --std=c++11 -O3 rand.cc
g++ -c -g -Wall --std=c++11 -O3 color.cc
ar r libutil.a rand.o color.o
C:\MinGW\bin\ar.exe: creating libutil.a
ranlib libutil.a
make[1]: Leaving directory `/home/****/####/src/util'
g++ -g -Wall --std=c++11 -O3 `sdl-config --cflags` `sdl-config --libs` ./util/l
ibutil.a main.o myapp.o -o ####.exe
myapp.o: In function `_ZN5MyApp4execEv':
C:\MinGW\msys\1.0\home\****\####\src/myapp.cc:29: undefined reference to `_SDL_
Delay'
C:\MinGW\msys\1.0\home\****\####\src/myapp.cc:29: undefined reference to `_SDL_
Delay'
C:\MinGW\msys\1.0\home\****\####\src/myapp.cc:29: undefined reference to `_SDL_
Delay'
C:\MinGW\msys\1.0\home\****\####\src/myapp.cc:29: undefined reference to `_SDL_
Delay'
C:\MinGW\msys\1.0\home\****\####\src/myapp.cc:29: undefined reference to `_SDL_
Delay'
myapp.o:C:\MinGW\msys\1.0\home\****\####\src/myapp.cc:29: more undefined refere
nces to `_SDL_Delay' follow
collect2.exe: エラー: ld はステータス 1 で終了しました
make: *** [charaga.exe] Error 1
エラーのあるmyapp.ccです.
#include <iostream>
#include <SDL.h>
#include "myapp.h"
using ::std::cout;
using ::std::endl;
struct MyApp::Impl{
Impl(int argc, char *argv[])
{
SDL_Init(SDL_INIT_TIMER);
}
~Impl()
{
SDL_Quit();
}
};
void ::MyApp::init(int argc, char *argv[])
{
impl.reset(new Impl(argc, argv));
}
void ::MyApp::exec()
{
for(int i = 0; i < 6; i++){
cout << i << "sec." << endl;
SDL_Delay(1000);
}
}
nm libSDL.aからの抜き出しです.
SDL_audio.o:
000002b4 T _SDL_CloseAudio
U _SDL_ConvertAudio
U _SDL_CreateMutex
U _SDL_CreateThread
U _SDL_Delay
U _SDL_DestroyMutex
U _SDL_Error
SDL_events.o:
00000000 t .text
U _SDL_AppActiveInit
U _SDL_AppActiveQuit
U _SDL_CheckKeyRepeat
U _SDL_CreateMutex
U _SDL_CreateThread
U _SDL_Delay
U _SDL_DestroyMutex
SDL_diskaudio.o:
00000000 D _DISKAUD_bootstrap
U _SDL_Delay
U _SDL_Error
U _SDL_RWFromFile
U _SDL_getenv
U ___mingw_vfprintf
U __imp___iob
U _atoi
SDL_dummyaudio.o:
00000000 D _DUMMYAUD_bootstrap
U _SDL_Delay
U _SDL_Error
U _SDL_getenv
U _free
U _malloc
SDL_dibaudio.o:
0000057c t _FillSound@20
U _GetCurrentThread@0
U _ReleaseSemaphore@12
U _SDL_CalculateAudioSpec
U _SDL_Delay
U _SDL_Error
U _SDL_SetError
SDL_systimer.o:
000000a4 T _SDL_Delay
$ sdl-config --cflags --libs
-I/mingw/include/SDL -D_GNU_SOURCE=1 -Dmain=SDL_main
-L/mingw/lib -lmingw32 -lSDLmain -lSDL -mwindows
ご指南の方よろしくお願いします.
お礼
素早い回答ありがとうございます. 何故かはわかりませんが解決しました.