問題タブ [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.

0 投票する
1 に答える
2493 参照

c# - C# で数学入力パネルを作成しようとしています

C# で数学入力パネルを作成するにはどうすればよいですか?

私はそれをdllに入れて呼び出そうとしましたが、すぐに閉じます。

C# で dll 関数を呼び出すと、パネルがポップアップしますが、すぐに消えます。助言がありますか?

0 投票する
3 に答える
1485 参照

c# - アンマネージC++へのC#呼び出しは、正方形の記号の文字列を返します

アンマネージC++DLLを呼び出すC#コードがあります。私が呼び出しているメソッドは、文字列を参照として受け入れることを目的としています。これを処理するために、StringBuilderを渡します。それ以外の場合は、StackOverflowExceptionがあります。

これは正常に機能していますが、一部の呼び出しでは、アンマネージコードから返される文字列は、次のようなごちゃ混ぜの文字列です:øŸE〜。、Ê。これはエンコーディングと関係があるはずですが、以下に示すいくつかのことを試しましたが、何も機能しません。これは、他の誰かが同様のことをするために書いたVB.Netコードの問題ではありません。

私が試したことは次のとおりです。1。これを使用しています:[DllImport( "dmphnx32.dll")]が、すべての文字セットオプションを試しましたが成功しませんでした。

  1. Encoding.Default.GetBytes、Encoding.ASCII、Encoding.Unicode、およびその他を使用しようとしましたが、成功しませんでした。

私はC++の経験がないので、実際にヘルプを使用できます。

DLLIMportメソッドは次のとおりです。

C++コードは次のとおりです。

アンマネージコードを呼び出すC#コードは次のとおりです。

ありがとう、コーリー

0 投票する
3 に答える
6243 参照

c# - C#アプリケーションで使用するためのDllImportのパラメーター化

ハードウェアにアクセスするためのライブラリを提供するサプライヤがあります。残念ながら、複数のデバイスがある場合は、異なるdll名でライブラリを複数回インポートする必要があります。結果として、重複したコードが1メートルトンあり、まもなくメンテナンスの悪夢になるのではないかと心配しています。

現在私たちが持っているのは次のようなものです。

..。

...。

..。

CまたはC++を使用している場合は、関数を1つのファイルで定義し、静的クラスに複数回#includeします。これは、他の方法よりも優れていますが、C#ではそのオプションがありません。

必要な数の静的デバイスクラスを生成できるファクトリを効果的に定義する方法について誰かが賢いアイデアを持っているなら、私は非常に興味があります。

ありがとう、

編集:関数プロトタイプは非常に多様であるため、それらが同じであることに依存する方法は適切ではありません。これまでの提案に感謝しますが、私はそれほど多くのアイデアをそれほど迅速に説明していませんでした。

0 投票する
5 に答える
80403 参照

c# - レジストリ キーを読み取る

bin フォルダーから DLL をインポートする Web アプリケーションがあります。

今私がやりたいことは、最初に、現在のプロジェクトではなく、別の場所にあるフォルダーから DLL をインポートすることです。

そのフォルダーのパスは、レジストリ キーに格納されます。

どうすればいいですか?

編集

なぜ私はこれを解決できないのですか?

string pathName = (string)registryKey.GetValue("BinDir");ここでは機能していませんが、ページロードイベントで機能しています...

しかし、この DLL インポートを行うと機能しません... どうすれば修正できますか?

0 投票する
2 に答える
358 参照

c# - ポインター (つまり int[]) を DLL に渡すときに、「固定」は本当に何かを保証しますか?

私はこれを検索しようとしましたが、何も見つかりませんでしたが、int[] をポインターとしてネイティブ DLL 関数に渡すと、DLL がポインターへの参照を維持できる危険性がまだありません。 「固定」ブロックが終了した後に再度アクセスしますか? GC がアレイを移動した場合、メモリ アクセス エラーが発生しませんか? もしそうなら、どうやってこれを回避しますか?それとも、これはありそうもないシナリオですか?

0 投票する
2 に答える
1499 参照

c# - P/InvokeからDllNotFoundExceptionをキャッチします

解決策のある投稿が見つかりました失敗したDllImportを処理するにはどうすればよいですか?

ホストがVistaシリーズとNTシリーズのどちらのバージョンのWindowsを使用しているかに応じて、OSのバージョンをチェックしてさまざまな処理を実行するアプリを作成しています。Vistaシリーズの場合、(DllImportを使用して)いくつかのDLLをロードしますが、それ以外の場合はこれらを使用しません。問題は、DllImportを使用してそれらをロードすると、それらのDLLがない古いバージョンのWindowsで使用した場合、実行時にDllNotFoundExceptionが発生することです。

DllNotFoundExceptionsをキャッチ/防止/無視するにはどうすればよいですか?未処理の例外イベントで例外を「処理済み」に設定しようとすると、アプリを続行できません。

0 投票する
3 に答える
2505 参照

c++ - Delphiアプリケーションから外部関数(C ++)を呼び出す際のアクセス違反

私はC++で書かれた外部DLLを持っています。以下の部分は、構造体型と関数を宣言しています。これらは、ポインターが与えられると、この型の変数を埋めます。

Delphiアプリケーションで同様の型を宣言し、上記の関数を呼び出します。

関数が呼び出されると、デバッガー例外通知が表示されます。

プロジェクト...モジュール'Scraper.dll'のアドレス10103F68でメッセージ'アクセス違反を伴う例外クラスEAccessViolationを発生させました。アドレスFFFFFFFC'の読み取り。プロセスが停止しました。

同じDLLからエクスポートされた他の関数は正常に動作するため、型宣言を間違えたと思います。私はこの時点で行き詰まっているので、どんなヒントも高く評価されます。

0 投票する
2 に答える
4719 参照

c# - C# DllImport MFC 拡張 DLL と名前マングリング

C# アプリケーションで使用したい MFC 拡張 DLL があります。私が公開している関数は C 関数です。つまり、このようにエクスポートしています。

関数は内部で MFC クラスを使用するため、P/Invoke を使用して C# で DLL を使用するにはどうすればよいですか。

次に、関数のオーバーロードを使用したいのですが、私が知る限り、C は関数のオーバーロードをサポートしておらず、C++ 関数をエクスポートすると、関数がマングルされます。では、この問題を解決するにはどうすればよいでしょうか。DllImportを使用して、C++ マングル関数をインポートできますか。

0 投票する
1 に答える
641 参照

dllimport - dll のインポート/エクスポート方法とその機能の使用方法

私はプロジェクトを開発しています。データを解凍するために、7zipソフトウェアから特定の機能を含めたいです。7zipソフトウェアから私のプロジェクトに特定の機能をエクスポートするようなものです。DLL のインポートとエクスポートを使用する必要がありますか、それとも他の方法がありますか?

0 投票する
1 に答える
1073 参照

sql - SQL CLRストアドプロシージャ-DllImportの相対パス?

ソリューション内の別のプロジェクトからwin32dllを参照するストアドプロシージャで構成されるC#プロジェクトがあります。現在、dllimportは絶対パスを使用して参照しています。代わりに相対パスを使用する場合、clrストアドプロシージャアセンブリがSQLサーバーにロードされた後の相対パスはどこにありますか?