問題タブ [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 投票する
4 に答える
562 参照

asp.net - ASP.NET 2.0 アプリは IIS 5 分離モードの Win 2003 で実行されますが、(既定の) IIS 6 モードでは実行されません

アプリは DLLImport を使用して、従来の管理されていない dll を呼び出します。この質問のために、この dll を Unmanaged.dll と呼びましょう。Unmanaged.dll は、他の 5 つのレガシー DLL に依存しています。従来の dll はすべて、ASP.NET アプリケーションの WebApp/bin/ ディレクトリに配置されています。

IIS が 5.0 分離モードで実行されている場合、アプリは正常に動作します。従来の dll への呼び出しはエラーなしで処理されます。

IIS が既定の 6.0 モードで実行されている場合、アプリは Unmanaged.dll (InitMe()) を開始できますが、後でそれを呼び出すと終了します (ProcessString())。

ここで髪を引っ張っています。管理されていない dll をさまざまな場所に移動し、あらゆる種類のセキュリティ設定を試し、解決策を長い間懸命に探しました。ヘルプ!

サンプルコード:

アップデート:

ミニダンプから取得したスタックで戻ります。スタックオーバーフローのようですが、誰かが私を助けてくれるならもっと知りたいです. sos.dll が読み込まれた WinDbg の "kb" の結果:

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

c# - DLLImport Int** - 可能な場合の方法

メソッドのパラメーターの 1 つとして int** を必要とするサード パーティの DLL を使用しようとしています。パラメータは、メモリ割り当てを指すポインタのアドレスとして記述されます。

混乱して申し訳ありません。パラメータは双方向だと思います。DLL は FPGA ボードと対話するためのもので、メソッドはホスト PC と PCI ボード間の DMA 転送をセットアップすることです。

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

c# - C# から FORTRAN DLL を呼び出す保護されたメモリ違反

FORTRAN コードからコンパイルされたレガシー dll を呼び出そうとしています。私は Interop を初めて使用しますが、それに関する記事をいくつか読んだことがあり、私の場合はかなり簡単なようです。

本当に呼び出したいメソッドには複雑なメソッド シグネチャがありますが、この単純な GetVersion メソッドを呼び出すことさえできず、保護されたメモリ違反が発生します。

ここに私の DllImport コードがあります:

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

失敗した単体テストは次のとおりです。

エラーメッセージは次のとおりです。

私が試した他のこと:

  • デフォルトのマーシャリングの使用
  • 文字列の代わりに char[] を渡す (代わりにメソッド シグネチャ エラーを取得する)
0 投票する
2 に答える
6544 参照

.net - DLLImport はアンマネージ DLL をどこで検索しますか?

簡単な質問: .Net で DLLImport 属性を宣言するとき、ランタイムはその DLL 依存関係を解決するためにどこを見ますか? DLL とそのすべての依存関係を bin フォルダーにダンプする必要がありますか?

0 投票する
4 に答える
23923 参照

dll - dllimport は、DLL が PATH にあるにもかかわらず、dll を見つけることができませんでした

[Dllimport("DllName.dll")] を使用すると、dll へのパスがプロセスの PATH 環境変数に存在することが確実な場合でも、「DllName.dll が見つかりませんでした」というメッセージが表示されます。

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

c# - const char* API を C# にインポートするには?

この C API 宣言が与えられた場合、どのように C# にインポートされるでしょうか?

私はこれまでに得ることができました:

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

c# - pinvoke: dllimport とインポートされたライブラリの操作方法が不明

C++ dll で dllImport を実行しており、次の署名があります。これまでのところ StackOverflow は非常に役に立ちました。

心配すべき落とし穴はありますか? dllimport を使用するのはこれが初めてです。

以下を C# にインポートする必要があります。

HANDLE FooInit(char* name); //name は "COM1" のような文字列のようです

int Foo1(HANDLE ハンドル, const char** センテンス); //文は "Hello World" のような文字列のように見えます

int Foo2(HANDLE ハンドル、DWORD* val);

どうもありがとう!

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

c# - void * C API を C# にインポートする方法は?

この C API 宣言が与えられた場合、どのように C# にインポートされるでしょうか?

私はこれまでに得ることができました:

当然、C# では "void *" はコンパイルされません。

一部のグーグルは、「オブジェクト」として翻訳する必要があることを示しています。それはうまくいくようです。しかし、他の人は、「Void * は、C/C++ 用語では関数ポインターと呼ばれ、C# 用語ではデリゲートである」と示しています。ここではあまり意味がありません。何に委任するのでしょうか? Google で見つけた他の API の同様の呼び出しでは、それぞれの API で他の関数を使用しています。しかし、この API では、他の呼び出しは意味がありません。

呼び出しのドキュメントには、次の例が示されています。

これは、静的な値でも渡すことができることを示しているようです。

void * の代わりに object でコンパイルされます。これが正しいかどうかはわかりませんし、テストする機会もありません (ライセンスの問題)。