私はSDL2をCLionと連携させようとしています(実験/学習できるように)。OS XでCLionとSDL2を併用する
#include <iostream>
#include <SDL.h>
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
bool init();
SDL_Window* gWindow = NULL;
SDL_Surface* gScreenSurface = NULL;
SDL_Surface* gHelloWorld = NULL;
bool init(){
bool success = true;
/*if(SDL_Init(SDL_INIT_VIDEO)<0){
success = false;
}
else{
}*/
return success;
}
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
そして、私のcmakeのファイルには、私は、プロジェクト内のフォルダにcmakeでhereからファイルFindSDL2.cmakeを持っている、また、この
cmake_minimum_required(VERSION 3.6)
project(SDL2_Lesson_1)
set(CMAKE_CXX_STANDARD 11)
# includes cmake/FindSDL2.cmake
set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIR})
set(SOURCE_FILES Lesson_1.cpp)
add_executable(SDL2_App ${SOURCE_FILES})
target_link_libraries(SDL2_App ${SDL2_LIBRARY})
set(SOURCE_FILES Lesson_1.cpp)
add_executable(SDL2_Lesson_1 ${SOURCE_FILES})
次のようになります。
私の主なコードは、次のようなですフォルダ。 私はそれらのファイルを投稿したので、すべてがコンパイルされて正常に動作します。私が)のinit(内コメントセクションのコメントを外すときには、コンパイルがブレークダウンし、私に次のエラーを与える:
Undefined symbols for architecture x86_64:
"_SDL_Init", referenced from:
init() in Lesson_1.cpp.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [SDL2_Lesson_1] Error 1
make[2]: *** [CMakeFiles/SDL2_Lesson_1.dir/all] Error 2
make[1]: *** [CMakeFiles/SDL2_Lesson_1.dir/rule] Error 2
make: *** [SDL2_Lesson_1] Error 2
注:Lesson_1.cppはメインコードを持つファイルです。また、これはエラーの一部に過ぎません。サイドノートとして
、あなたはそれが簡単に使用してリソースを管理するために見つけることができ[RAII](http://stackoverflow.com/questions/2321511/)だからドンクリーンアップをしているときや、例外を処理するときにクリーンアップを明示的に処理するときに、何が初期化されていないかを手動でチェックする必要があります。 RAIIのSDLのようなCスタイルのインターフェイスを簡単にラップすることができます(http://stackoverflow.com/questions/39176805/)。 – jaggedSpire
どれくらいの誤差がありますか?残りの部分を合理的に投稿できますか? – jaggedSpire
@jaggedSpire確かに、私は残りのエラーを掲載しました。 –