問題タブ [dllimport]
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# - ポインター (つまり int[]) を DLL に渡すときに、「固定」は本当に何かを保証しますか?
私はこれを検索しようとしましたが、何も見つかりませんでしたが、int[] をポインターとしてネイティブ DLL 関数に渡すと、DLL がポインターへの参照を維持できる危険性がまだありません。 「固定」ブロックが終了した後に再度アクセスしますか? GC がアレイを移動した場合、メモリ アクセス エラーが発生しませんか? もしそうなら、どうやってこれを回避しますか?それとも、これはありそうもないシナリオですか?
c# - P/InvokeからDllNotFoundExceptionをキャッチします
解決策のある投稿が見つかりました:失敗したDllImportを処理するにはどうすればよいですか?
ホストがVistaシリーズとNTシリーズのどちらのバージョンのWindowsを使用しているかに応じて、OSのバージョンをチェックしてさまざまな処理を実行するアプリを作成しています。Vistaシリーズの場合、(DllImportを使用して)いくつかのDLLをロードしますが、それ以外の場合はこれらを使用しません。問題は、DllImportを使用してそれらをロードすると、それらのDLLがない古いバージョンのWindowsで使用した場合、実行時にDllNotFoundExceptionが発生することです。
DllNotFoundExceptionsをキャッチ/防止/無視するにはどうすればよいですか?未処理の例外イベントで例外を「処理済み」に設定しようとすると、アプリを続行できません。
c++ - Delphiアプリケーションから外部関数(C ++)を呼び出す際のアクセス違反
私はC++で書かれた外部DLLを持っています。以下の部分は、構造体型と関数を宣言しています。これらは、ポインターが与えられると、この型の変数を埋めます。
Delphiアプリケーションで同様の型を宣言し、上記の関数を呼び出します。
関数が呼び出されると、デバッガー例外通知が表示されます。
プロジェクト...モジュール'Scraper.dll'のアドレス10103F68でメッセージ'アクセス違反を伴う例外クラスEAccessViolationを発生させました。アドレスFFFFFFFC'の読み取り。プロセスが停止しました。
同じDLLからエクスポートされた他の関数は正常に動作するため、型宣言を間違えたと思います。私はこの時点で行き詰まっているので、どんなヒントも高く評価されます。
c# - C# DllImport MFC 拡張 DLL と名前マングリング
C# アプリケーションで使用したい MFC 拡張 DLL があります。私が公開している関数は C 関数です。つまり、このようにエクスポートしています。
関数は内部で MFC クラスを使用するため、P/Invoke を使用して C# で DLL を使用するにはどうすればよいですか。
次に、関数のオーバーロードを使用したいのですが、私が知る限り、C は関数のオーバーロードをサポートしておらず、C++ 関数をエクスポートすると、関数がマングルされます。では、この問題を解決するにはどうすればよいでしょうか。DllImportを使用して、C++ マングル関数をインポートできますか。
dllimport - dll のインポート/エクスポート方法とその機能の使用方法
私はプロジェクトを開発しています。データを解凍するために、7zipソフトウェアから特定の機能を含めたいです。7zipソフトウェアから私のプロジェクトに特定の機能をエクスポートするようなものです。DLL のインポートとエクスポートを使用する必要がありますか、それとも他の方法がありますか?
sql - SQL CLRストアドプロシージャ-DllImportの相対パス?
ソリューション内の別のプロジェクトからwin32dllを参照するストアドプロシージャで構成されるC#プロジェクトがあります。現在、dllimportは絶対パスを使用して参照しています。代わりに相対パスを使用する場合、clrストアドプロシージャアセンブリがSQLサーバーにロードされた後の相対パスはどこにありますか?
c# - C#からのC ++:(DLL内の)C ++関数はfalseを返しますが、C#はそれがtrueであると見なします!
私は、C ++ APIでいくつかの関数を呼び出す小さなC#アプリを書いています。DLLにC++コードを組み込み、C#コードはDllImportを使用してAPIを呼び出します。(私はC ++ DLLに.DEFファイルを使用しているので、extern "C"は必要ありません。)
これまでのところ、APIには1つの関数がありますが、現在はまったく何もしていません。
C#では、次のものがあります。
私の問題は、何らかの理由で、bが常にTRUEと評価されていることです。if(!b)にブレークポイントがあり、デバッガーはそれを「true」として報告します。これは、C++関数が返すものとは関係ありません。
C#ブール値はC ++ブール値と同じですか?そうでない場合でも、戻り値が「true」であるとどのように検出されるかはわかりません:)
誰かがこの奇妙な矛盾を手伝ってくれる?
前もって感謝します!
c# - ガベージコレクトされたデリゲートのコールバック
USBデバイスを使用しています。このデバイスはメッセージを受信しますが、いつ、どのくらいの頻度でメッセージを受信しますか。ドライバーに付属するAPIは、デバイスがメッセージを受信したときにコールバックを提供するsetreceiveCallBack関数を指定します。しかし、ランダムな時間または間隔で、garbagecollectedデリゲートの例外に関するコールバックを受け取ります。私は自分の問題の解決策を探しましたが、私の場合はどの解決策も機能していないようです。以下は私のコードの最大の部分です:
dllimport - DLLプロジェクトのライブラリをリンクするヘルプ
こんにちは、VS08にDLLプロジェクトがあり、lib32eay.dll(openssl)のコードを参照しています。dLLをビルドすると、opensslがインストールされているため、マシン上で正常に動作します。ただし、クライアントにopensslがインストールされていないため、openssl dllを参照しているため、アプリの実行中にエラーが発生します。DLLプロジェクトをビルドして、必要なものをすべて含めることができるようにするには、クライアントにサードパーティのライブラリが不足していないことなどを心配する必要がないようにするにはどうすればよいですか?
.net - マネージ コードからアンマネージ メモリ割り当てを解放する
.NET アプリケーションは C dll を呼び出します。C コードは、char 配列にメモリを割り当て、この配列を結果として返します。.NET アプリケーションは、この結果を文字列として取得します。
C コード:
C# コード:
いくつかのテストでは、ガベージ コレクターが C コードによって割り当てられたメモリを解放しないことが示されています。
どんな助けでも大歓迎です。:)