SDLには、そのインメントメントにWinMainがあり、SDL_main関数が宣言されています。 ユーザーは、その関数の本体とその機能を持つSDLライブラリ呼び出しのエントリポイントを定義できます。SDLのようなメインエントリポイントを含むライブラリをC++でビルドする方法
同じ実装でライブラリを実装したいと思います。 どのようにして、エントリポイントを含むライブラリをC++でビルドし、SDLのように定義されて呼び出される関数のプロトタイプをユーザに与えるのですか?
可能な実装は次のようになります。
Lib.hpp:
#define Main lib_main
extern int lib_main();
Lib.cpp:
#include "lib.hpp"
int main(){
// the lib code runs here
lib_main();
}
は後に、私はそうのように使用することができ、このライブラリを構築:
main.cpp
#include "lib.hpp"
int Main(){
// The user code
}
私はそのコマンドでLib.cppをコンパイルすることはできません。
グラム++ -shared -o lib.cpp Lib.dll -Wl、 - アウトIMPLIB、libLib.a
それが取得lib_main()の定義されていない参照。
私は窓を使用しています。
'int main(){...}'は 'int lib_main();(){...}'として展開されます.Lib.hppの '#define'を更新したいかもしれません。 – AJNeufeld
更新。ありがとう –
ビルドフラグで[プログラムのエントリポイントを変更する](http:// stackoverflow。com/questions/7494244/how-to-change-entry-of-c-program-with-gcc)を参照してください。 – Matt