問題タブ [native-code]
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.
debugging - サード パーティの dll ソース コードがどこにあるかを Visual Studio に示すにはどうすればよいですか?
C ライブラリ用の C++/CLI を作成しています。ライブラリのソースコードがあります。デバッグ セッションを起動すると、C dll にステップ インできません。VS は、ソース コードが利用できないと言います。では、VS にその場所を伝えるにはどうすればよいでしょうか。ありがとう... Tools -> Options -> Debugging -> Symbols を指定して、pdb があるフォルダーを追加しようとしましたが、何も変わりませんでした。よろしく
解決済み: C++/CLI dll を呼び出す C# プロジェクトの Debug フォルダーに dll ファイルと .pdb ファイルをコピーする必要があることがわかりました。
mfc - 呼び出し時に CObject ポインタが null に初期化される
コードを呼び出すと
マネージ コードから相互運用機能を介して CObject ポインターが NULL または未定義の値で初期化されます。ただし、ネイティブ コード自体で実行すると、適切に初期化されます。何故ですか??
xamarin.ios - Monotouchmtouch引数の問題
プロジェクトをコンパイルするときに、これら2つの引数をうまく機能させるのに問題があります。どんな助けでも大歓迎です。
fliteはネイティブCライブラリであり、TestFlightはObj-Cライブラリです。それらを一緒にうまくプレイさせる方法はありますか?
lfliteライブラリはうまく機能していたので、TestFlightを追加して、状況は横ばいになりました。ソリューションはコンパイルされますが、起動時にクラッシュします。
windows - 32ビット+64ビットアプリケーションを組み合わせて1つの32+64ビットアプリケーションにまとめるツールはありますか
Windows 2008 R2サーバー(サーバーコアインストール)では、wow64は必須コンポーネントではなくなりました。
64ビットアプリケーションと同じソースコードを使用して32ビットアプリケーションをコンパイルできます(あちこちにいくつかのifdefがあります)。
32 + 64ビットアプリケーションが純粋な32ビットWindowsと64ビットのみのWindowsで実行されるように、両方のバージョンのアプリを1つの実行可能ファイルに入れるツールはありますか?
パッカー自体は32ビットまたは64ビットになるため、パッカーについては説明していません。
android - Android NDK Native LIB、既存のstdioをどうするか?
現在、NDKを介してネイティブlibおよびAndroidアプリに組み込んでいる既存のネイティブC /C++コードがあります。ネイティブコードには、stdoutとstderrへのprintステートメントがたくさんあります。このようなもののベストプラクティスはありますか?それらを無視することはできますか、それともAndroidロギングシステムにリダイレクトする必要がありますか?
既存のコードをスタンドアロンのネイティブバイナリとしてビルドし、adbを介して実行すると、printf(stdoutへ)からコンソールへのすべての出力が表示されていました。
間抜けな質問のようですが、stdioはAndroidアプリのどこに行きますか?
windows - カーネルモードでZwCreateKeyを呼び出すと、Windowsのセキュリティが回避されるように見えるのはなぜですか?
私が協力しているチームは、最近、私たちのソフトウェアをサードパーティの仮想化ソフトウェアと互換性を持たせるという課題に直面しています。ZwCreateKey
このソフトウェアは、カーネルドライバーを使用して、WindowsネイティブレジストリAPI(など)のフックを実行します。Ntdllで呼び出しをフックすることで機能します。私たちのソフトウェアもかなり低レベルであり、状況によっては、フックされることなく実際のレジストリにアクセスする必要があります。
私たちは、独自のカーネルドライバーを使用してZwCreateKey
、フックを回避するために、などを呼び出す可能性を模索しています。これは基本的に、NTレガシードライバーと、独自のネイティブレジストリ機能を提供するユーザーモードライブラリを作成することを意味します。ライブラリとドライバーは非常に単純です。IOCTLを使用してZwCreateKey
、などのすべてのパラメーターをドライバーに渡し、カーネルバージョンの呼び出しを呼び出して結果を返します。
このアプローチはうまく機能しており、仮想化すると実際のレジストリに対して読み取り/書き込みのシステムができたように見えます。唯一の問題は、新しいシステムがレジストリオブジェクトのWindowsセキュリティを循環させているように見えることです。
ZwCreateKey
次のようなアクセスマスクを取ります。
私の理解では、現在カーネルモードで実行していますが、ユーザーのトークンのコンテキストはまだあります。これは、アクセスマスクテストが失敗した場合のユーザーと同じように、のカーネルバージョンZwCreateKey
が失敗することを意味するはずです。実際に起こっていることは、制限されたトークンを使用しても、ドライバーが呼び出されたときに、制限されたユーザーによって呼び出されたときに、制限された部分HKLMにキーを作成できることです。何が得られますか?ACLチェックを自分で実行する必要がありますか?カーネルモードで自分の特権を制限するために何かをする必要がありますか?どんな助けでも大歓迎です。
c# - C# とネイティブ C++ の間でメモリを共有する
マネージ コードとネイティブ コードの間でメモリを共有する方法はありますか (私は .Net 2.0 を使用しているため、このバージョンでは MMF を使用できません)、私はこの .Net を初めて使用するので、実際にはマーシャリング?私はマネージド コードとアンマネージド コードの間の通信のためにこれを行いましたが、私の質問は、マーシャリング中にアンマネージド メモリ領域のメモリ部分をマネージド メモリ領域にコピーするのか、それとも同じアドレス空間を共有するのかということです。したがって、変数をアンマネージド コードから変更すると、その後、マネージド コードでも値が変更されますか?
android - Android NativeActivity OpenGL-ES ネイティブ アプリ: フル スクリーン未満のサーフェスを取得する方法
Google の native_app_glue ラッパーを使用したネイティブ Android アプリがあります。GLES をレンダリングするためのフルスクリーン未満のサーフェスを取得したいと考えています。Activity から派生した Java レイヤーを使用する GLES アプリでは、これは Java レイヤーの getWindow().setLayer() によって実現されます。ただし、私のプロジェクトの状況では、このソリューションを使用できません。
nativeActivtiy と native_app_glue レイヤーを使用すると、JNI を使用して Java クラスを取得し、Java にコールバックできますが、View 階層を変更することはできません。JNI 経由で C コードから setLayers() にコールバックすると、NativeActivity が View 階層が作成されたスレッドと同じスレッドにないため、このエラーが発生します。
E/AndroidRuntime(21503): android.view.ViewRoot$CalledFromWrongThreadException: ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます。
そして、これを行うための私のコードは次のとおりです。
一部の人が提案する解決策は、glViewport() を使用してフルスクリーン未満に描画することです。このソリューションは視覚的には機能しますが、EGL ドライバーがまだフルスクリーン サーフェスを処理しているため、パフォーマンスが低下します。
このアプローチが最適なソリューションであるかどうかは疑問です。これは、ネイティブ アプリ ラッパーを使用することからアーキテクチャが大きく変わるためです。a) ネイティブ アプリのグルー ラッパーを破棄し、ネイティブ コード (または少なくともその一部) を JVM と同じスレッドで実行する b) setContentView() を介して View 階層を作成する Java クラスを NativeActivity から派生させる c) Java と同じスレッドで実行されるネイティブ コードで JNI を使用して setLayout() を呼び出す d) ネイティブ コードの残りの部分は、必要に応じて別のスレッドで実行することができる
上記のアプローチが実行可能かどうか、これで障害に遭遇するかどうかはわかりません。
android - .apkファイルからAndroid.mkまたはネイティブソースファイルを取得することは可能ですか?
.apkファイルからJavaソースファイルを取得するのは非常に簡単なようです。しかし、ツールやトリッキーな方法で、.apkファイルからAndroid.mkまたはネイティブソースファイルを取得することは可能ですか?
私はAndroidアプリのネイティブコードのセキュリティについて調査しているので、これらのファイルは私にとって非常に重要です。ありがとう。
android - ネイティブコードから生成されたAndroidRクラスにアクセスする
ネイティブコードからRクラス属性にアクセスする方法があるかどうか疑問に思っています。プロジェクトのクリーンビルドを実行するたびに変更される可能性のある生成されたIDを読み取る必要があり、手動でそれらをに渡したくないです。ネイティブ部分。
編集 @trashkalmarから提案されているように、ここに解決策があります: