私は現在、数百のコード ファイルといくつかのサードパーティ ライブラリへの依存関係を含むプロジェクトを Mac OS に移植しています。最終的に、プログラムが警告やエラーなしでコンパイルされるようになりましたが、独自のメイン関数を実行しているようには見えません。
代わりに、サードパーティに属していると思われる他の主な機能を実行しているようです。この関数は、診断用のデータをコンソールに書き込み、その後終了します。
(gdb) continue
Current language: auto; currently c++
//
// This is an automatically generated file.
// Do not edit.
//
const unsigned short expTable[] =
{
0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00,
...
0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00,
};
Debugger stopped.
Program exited with status value:0.
スタック トレースは有効に見えますが、gdb は各スタック エントリの正しい行番号とファイル名を表示しないため、デバッガを使用してこのメイン関数が存在する場所を見つけることができません (詳細については、この未解決の質問を参照してください)。
検索が完了するまでに数分かかりましたが、結果は返されませんでした。
私のプロジェクトは他のライブラリの中でも SDL を使用していますが、私は SDL_Main() とその根本的な問題を認識しており、完全に機能する SDL プロジェクト テンプレートの上にプロジェクトを構築しました。したがって、私自身のメイン関数が有効であると確信しています。
何がうまくいかないのか分かりますか?現在、不正なメイン関数を見つけて削除する方法についてのアイデアがありません。
ありがとう、
エイドリアン
編集:私が見つけたように、「これは自動的に生成されたものです」という文字列でファイルファイルを検索する際に間違いを犯しました。同じ文字列を持つ数十のファイルを見つけました。これらはすべて、私が使用しているサードパーティ ライブラリの 1 つである FreeImage に属しています。ということで、問題は FreeImage に関係しているようですが、同封の MacOs makefile で Freeimage をライブラリとしてコンパイルし、ライブラリのみをインクルードしたので、どうすればよいかまだわかりません。FreeImage の新しいバージョンを再構築して、問題が解決したかどうかを確認します。