問題タブ [objective-c++]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - Objective C++ で Nib をロードしてウィンドウを表示する
Objective C++ を使用して C++ コンストラクターから Nib をロードしようとしています。コードをまとめるのに十分な例を検索して見つけましたが、ウィンドウが表示されません。または、そのことについては任意のウィンドウ。
コンストラクターの例を次に示します。
コンストラクターの目的は、ディレクトリの内容を文字列にロードすることです。私がやろうとしているのは、ファイルを開くことができないときにエラー ウィンドウを表示することです。
ErrorWindow.nib には、[OK] ボタンとエラー用の a を備えた 1 つのウィンドウがあります。ペン先にNSTextView
a を設定し、それをウィンドウに接続しました。NSWindowController
私の唯一のリンクは、ほとんどの例がこれを示しているということ[errorWindowControl showWindow: self]
です。ではなく、showWindow: nil
これは C++ コンストラクターであるため、私は持ってself
おらthis
ず、機能しません。
重要な場合、このコンストラクターはのプライマリのawakeFromNib
メソッドから呼び出されます。MainMenu.nib
NSObject
ありがとう
header - Objective-c++ シンボルが見つからない
へじ
hej.m
メイン.mm
これは私に与えます:
「hej()」、参照元: main.o シンボル内の _main が見つかりません
main.mm を main.m (単一の m) に、または hej.m を mm または cpp に名前変更すると、機能します。(ただし、これらの「解決策」はどれも好ましいものではありません。objc++ 環境で c-lib を使用したいと想像してください。lib 全体を変更したくないか、できなかった可能性があり、objc++ で使用する必要があります。 )
ここで何が起こっているのですか?
c++ - C++の多重継承とObjective-C。これはGCCのバグですか?
私は昨日次の奇妙な行動に遭遇しました。それは私にはコンパイラのバグのように見えますか、それとも私が見逃したものがありますか?Facebook Connect for iPhoneのObjective-CクラスをObjective-CからC++へのアダプタークラスでラップして、独自のOpenGL /C++コードからより便利に使用できるようにしました。
次のコードは問題を明らかにします。以下の最初のバリアントでは、コンパイラはコンパイルしますが、vtableを台無しにするため、間違ったメソッドが呼び出されます。2番目のバリアントでは、gccが混乱していることを示すコンパイラエラーが発生します。
コメントは、状況をより詳細に説明しようとします。
この問題は、iPhoneSDKとMac独自のg++、およびバージョン4.0.1と4.2で発生します。私が間違って理解したことがありますか、それともこれはg ++のバグですか?
更新 私の例には、タイラーとマーティンヨークが指摘した偶発的なバグが含まれていましたが、ここでは問題ではありません。以下は更新された例です。
UPDATE 2 init:FooobjcとBarobjcのメソッドの名前がinitfoo:とinitbar:に変更された場合、正しく機能しますが、コードの問題点を説明することはできません。Objective-Cがメソッドシグネチャを作成する方法に関連している可能性がありますか?
c++ - 「NSBundle は '-pathForResource:ofType' に応答しない可能性があります」という警告を削除する方法
Objective-C から pathForResource 機能を C++ に公開しようとしています。
ただし、私はobjective-cに非常に慣れていないため、ac文字列をobjective-cの引数として使用する方法を識別できませんでした。明らかに私はここで間違った考えを持っています。c 文字列を引数として使用するように pathForResource を取得するにはどうすればよいですか?
ここに私の機能があります:
objective-c - Objective-C++ Cocoa で RGB データをビットマップに変換する
ビットマップ ファイルに変換したい RGB unsigned char のバッファがあります。
私のRGBフロートは次の形式です
R [(0,0)]、G[(0,0)]、B[(0,0)]、R [(0,1)]、G[(0,1)]、B[(0、 1)]、R [(0,2)]、G[(0,2)]、B[(0,2)] .....
各データ単位の値は 0 から 255 までの範囲です。この変換を行う方法を知っている人はいますか?
cocoa - OpenGLにCocoaでNV12テクスチャを表示させる方法
YUV:420(別名NV12)フレームデータがあります。OpenGLにglTexImage2D()レンダリングの形式を認識させるにはどうすればよいですか。
色空間変換を実行する必要があるかもしれないことに気づきましたが、openGlに色空間変換を実行するようにグラフィックハードウェアに命令するように指示する方法はありますか?
iphone - Objective-C++ を使用した iPhone デバイス/シミュレータのメモリの異常
プロジェクトを (Windows Mobile から) iPhone に移植し、Objective-C++ を使用して、汎用の C および C++ コードの多くを可能な限り共有しています。ただし、テスト中に、デバイスで実行している場合にのみ現れる、好奇心旺盛で厄介な問題に遭遇しました。再現性を証明し、簡単に共有できるように、問題のコードを新しいプロジェクトにまとめました。
残りのプロジェクト ファイルと設定は、新しい iPhone ウィンドウ ベースのアプリケーションを作成することによってデフォルトで提供されます。(.xib を削除し、MemoryTest-Info.plist から「メイン nib ファイルのベース名」を削除し、main.mm で UIApplicationMain の 4 番目のパラメーターとして @"MemoryTestAppDelegate" を指定して、Interface Builder を削除しました。)
シミュレーターはこの例を期待どおりに実行しますが、デバイスには問題があります。ただし、wideHello と wideHello の両方が Locals ウォッチ エリアで破損しているように見えます。(wideHello は表示されませんが、正しい文字数が示され、narrowHello は "`K3\x10f\x11" と表示されます。) メモリ ウィンドウで 2 つの文字列を調べると、正しい内容が表示されます - 想定されたアドレスを 64 バイト超えています。 wideHelloとnarrowHelloの
オーバーロードされたメソッド Widget::Go(const wchar_t*) const の 2 番目の呼び出しで示されるように、wideHello 文字列は std::wcout を介して表示され、applicationDidFinishLaunching をステップ実行すると、文字列が正しく出力されます。ただし、wcscpy/memcpy を使用したコピー操作は、実際のコンテンツの 64 バイト先の「前の」データから読み取られたため、実際のデバイス上のアプリケーションに多くの問題が発生しました。ローカル スタック上のウィジェットの初期化を Widget* と動的割り当てに置き換えると、メモリ レイアウトは期待どおりになります。他のバリエーションも試しましたが、スタックに割り当てられた C++ オブジェクトだけが問題を引き起こしているようです。
読んでくれてありがとう。
c++ - PerformSelectorを介してポインターまたは整数型を渡す
私はObjective-Cの部分をC++プロジェクトに混ぜています(クロスプラットフォームであるということについては議論しないでください)。
ここで、ココア環境の正しいスレッド(つまりメインスレッド)でいくつかのC++関数またはメソッドを呼び出したいと思います。
私の現在のアプローチは、関数ポインタをObjective-cインスタンス(から派生NSObject
)に渡し、そのインスタンスでperformSelector
/performSelectorOnMainThread
を実行することです。
しかし、performSelector
sは引数としてオブジェクトを期待しているので、通常はこれをどのようにラップしますか?
例:
...ここで、testは次のように宣言されています。
今週はobjective-cから始めただけなので、もっと良い方法があれば、それについて聞いて喜んでいることを付け加えなければなりません。
また、プロジェクトはブラウザプラグイン(現在はMac上のSafariのみを対象としている)であるため、メインループやアプリケーションオブジェクトにアクセスできないことにも注意してください。
unit-testing - GH-UnitおよびObjectiveC++
GHUnitを使用して単体テストを実行するiPhoneプロジェクトがあります。最近、FFTの計算を容易にするために、複素数を実装し、一部の演算子をオーバーロードする必要がありました。ここでの目標は、FFTWなどのライブラリが使用する可能性のあるすべての機能のオーバーヘッドなしでFFTを実行するクリーンな方法を作成することでした。この意味で、FFTで実行する計算の数をさらにカスタマイズできました(したがって、これまたは従来のDFTで使用されているものを因数分解する複雑さを軽減します)。
つまり、FFTWを使用するのではなく、独自のFFTライブラリをC++で実装することにしたのはこのためです。ただし、これによりGHUnitでいくつかの問題が発生しました。私のすべての本番ターゲットは、FFTライブラリの統合で正しく機能しますが、GHUnitは機能しません。具体的には、GHComposeStringなどでリンカーエラーが発生します。これは、ユニットテストターゲットでのみ発生します。この問題は何でしょうか?最初は、これは関数名のマングル方法がCとC ++で異なるためだと思いましたが、プロジェクトの残りの部分には影響せず、GHUnitの部分だけに影響するようです。
C++とGHUnitの混合に関するサポートをいただければ幸いです。