私が取り組んでいるマルチプラットフォームアプリケーションは、実行しているプラットフォームに応じて、単一のC++クラスの異なるサブクラスを使用します。スーパークラスを変更せずにOS XサブクラスをObjective-C++(.mm)ファイルにすることはできますか?C++クラスのObjective-C++サブクラスを作ることができます
編集:詳細
プロジェクト、それが今、このファイルの階層が含ま立つよう:要するに
* VideoDriver.cpp - (superclass)
- VideoDriver_OSX.cpp - (subclass, contains Mac implementation)
- VideoDriver_win.cpp - (subclass, contains Windows implementation)
- VideoDriver_X11.cpp - (subclass, contains Linux implementation)
を、私はVideoDriver_OSXでのCore Animationおよびその他のCocoaライブラリを使用できるようにしたいです実装。これをObjective-C++ファイル(VideoDriver_OSX.mm)に変更すると、私はこれらのCocoaライブラリを使用できますが、VideoDriver_OSXオブジェクトをインスタンス化しようとするコード行(別のファイルにあります)は、この動的リンカーエラーを実行時に発生させます:
dyld: lazy symbol binding failed: Symbol not found: __ZN15VideoDriver_OSXC1EP10gui_info_sP6CPFifoI17DecodedVideoFrameE
これはC++の名前のマングリングに関連しているようですが、解決方法はわかりません。私は本当に助けに感謝します、人々。
おかしい、私はこれを行う方法の例で、以前同様の質問をしました:http://stackoverflow.com/questions/10014684/objective-c-disadvantages-to-bridging-with-c –
OS XサブクラスをObjective-C++(.mm)ファイルにする "< - これは意味をなさない。 –
エラーの原因となったコード行を記載してください。 – mydogisbox