2016-05-13 41 views
1

私はC++のクロスプラットフォームのOpenGL 4.5/DirectXライブラリで作業しています。 mac osxとlinuxの場合、SDL2をoglレンダラーで使いたいのですが、Windowsではwglでdirectxレンダラーを実装したいと思います。問題は、SDLは "int main(int argc、char ** args)"へのアクセスを必要とし、SDLmainにある初期化コードのためWinMainを定義することはできません。助言がありますか ?SDL2の "int main(int argc、char ** argv)"をバイパスします。

PS:私はあなたがSDL.h例えば含む前SDL_MAIN_HANDLEDを定義したい場合がありますエラー

unresolved external symbol _main referenced in function "int __cdecl invoke_main(void)" ([email protected]@YAHXZ) in VS2015. 
+0

を見ないが、main' 'の2番目のパラメータは、従来' argv'、ない 'args'と呼ばれています。 –

+0

sry;私の悪い。私はJAVAで10分早くプログラミングしていました:) – Coder32

答えて

1

を取得

#define SDL_MAIN_HANDLED 
#include "SDL.h" 

あなたの質問に関連https://wiki.libsdl.org/SDL_SetMainReady

+0

hmm ...私はそれについて聞いたことがありません。もう一つのこと:マクロを使ってDx APIとSDL APIを分離することをお勧めしますか? – Coder32

+0

#if定義のようなもの(DX_RENDERER)... #elif defined(OGL_RENDERER)#endif – Coder32

+0

異なるプラットフォームで異なる実装をすることを意味するなら、プリプロセッサディレクティブを使用することもできますが、プラットフォーム固有の部分を別々のファイルに分離する必要があります。 –

関連する問題