main.m ファイルを main.mm ファイルに変換すると、適切にリンクされなくなる理由を理解しようとしています。
問題を次のコード例に減らしました。
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
int main( int argc, const char ** argv ) {
return NSApplicationMain( argc, argv);
}
gnustep と Linux を使用しています。次のコマンドを入力すると、すべてが期待どおりに機能します。
g++ -g -c main.m -I/usr/GNUstep/Local/Library/Headers -I/usr/GNUstep/System/Library/Headers
g++ -g -o test main.o -L/usr/GNUstep/Local/Library/Libraries -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui
ここで、main.m の名前を main.mm に変更し、これら 2 つのコマンドを使用すると (main.m を除く main.mm と同じ):
g++ -g -c main.mm -I/usr/GNUstep/Local/Library/Headers -I/usr/GNUstep/System/Library/Headers
g++ -g -o test main.o -L/usr/GNUstep/Local/Library/Libraries -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui
次のエラーが表示されます: main.mm:7: `NSApplicationMain(int, char const**)' への未定義の参照
誰かが私が間違っていることを見つけてもらえますか? リンクに失敗する理由がわかりません。
いくつかの C++ クラスを目的の C プログラムに追加しようとしていますが、これが続行を妨げています。
ご協力いただきありがとうございます。