問題タブ [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# - C# DllImport の戻り値の型は TCHAR ですか?
次のシグネチャを持つ C++ 関数があります
私は持っている
文字列を TCHAR* にマーシャリングするにはどうすればよいですか? ありがとう
c++ - .NET でマネージ DLL からアンマネージ クラスを使用するにはどうすればよいですか?
マネージDLL ファイルから dllexport しようとしているアンマネージ クラスがあります。アンマネージ クラスを別のマネージDLL ファイルで使用しようとしています。ただし、これを実行しようとすると、リンクエラーが発生します。
アンマネージ DLL ファイルでこれを何度も行ってきたので、その仕組みを理解しています。マネージド クラスで「public ref」などを使用する方法を知っています。
どこかに設定する必要があるフラグはありますか?または、DllImport マジックを実行する必要がありますか?
これは .NET 2.0 およびVisual Studio 2005にあります。
c# - C# からの C++ dll 関数の呼び出し: 構造体、文字列、および wchar_t 配列の
これは私が解決する必要がある簡単な問題ですが、すべての試行で同じエラーが返されるため、髪が白くなっているように感じます。
「保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。」
dll を呼び出す C++ で記述されたサンプル アプリがあります。関連するコードは次のとおりです。
C++ コードをデバッグすると、Unicode データがデータ構造体に書き込まれます。
これがC#で同じことをしようとする私の試みです
私の推測では、convertHKID_Name 関数によって書き込まれるのはこの構造体であるため、RECO_DATA 構造体を適切にマーシャリングしていないと思います。しかし、どうすれば修正できますか?
.net - DllImport と ASP.NET
インポートされたメソッドを使用すると、ASP.NET が Dll をロードし、使用が終了した後でもファイルをロックするため、DllImport と ASP.NET で問題が発生しています。ASP.NET にファイルのロックを強制的に解除させる方法はありますか?
c# - C#形式の外部DLL関数パラメーター
私はまだこのトピックに関する良い参考文献を見つけていません。この例では、C#に移植しようとしているC++コードをいくつか取り上げます。
C ++ランドには、外部ライブラリ関数の次のプロトタイプがあります。
そしてその中でそのように使用されます:
今、私は最初の行をC#に移植しようとしていますが、ここに明確なパスが表示されません。
これは私がこれまでに得たものです:
ここでの質問は次のとおりです。「PSTRpPathFile」は「[MarshalAs(UnmanagedType.LPStr)] stringpPathFile」である必要があることを教えてくれる良いガイドはありますか...それが正しいと仮定しますか?
または、「PMAPPING」構造体へのポインタが「outIntPtr pMapping」になるということは...それが正しいと仮定しますか?
この一人の人に何か助けはありますか?
silverlight - Caps Lock が Silverlight アプリケーションで切り替えられているかどうかを確認する方法は?
Silverlight アプリケーションのログイン画面で、Caps Lock がオンになっているかどうかを確認する必要があります。これは KeyUp または KeyDown イベントを処理することで簡単に実行できますが、キーが押されていない場合でも、キーがオンまたはオフに切り替えられているかどうかを判断するにはどうすればよいでしょうか?
これを実行したい理由は、Silverlight アプリケーションの実行中にユーザーが Caps Lock を押さずに、ログイン画面に到達する前に Caps Lock を切り替えた場合です。Caps Lock がオンになっていることを警告する必要があります。
どうやら、Silverlight ではアンマネージ コードを処理できないため、次のコードは機能しません。
[DllImport("user32.dll")] internal static extern short GetKeyState(int keyCode);
interop - DllImport - PreserverSig および SetLastError 属性
MSDN で、2 つの属性について次の説明を見つけました。
PreserveSig PreserveSig フィールドを true に設定して、管理されていない署名を HRESULT または retval 値で直接変換します。HRESULT または retval 値を例外に自動的に変換するには、false に設定します。デフォルトでは、PreserveSig フィールドは true です。
SetLastError呼び出し元が Marshal.GetLastWin32Error API 関数を使用して、メソッドの実行中にエラーが発生したかどうかを判断できるようにします。Visual Basic では、デフォルトは true です (オーバーヘッドがいくらか追加されます)。C# および C++ では、デフォルトは false です。
私の質問は次のとおりです。これら 2 つは互いにどのように関係していますか? PreserveSig を「false」に設定したとします。これは、HRESULT を例外に変換する必要があることを意味します。アンマネージ関数がエラーまたはエラーが発生しなかったことを示す整数を返す場合、これをどのように例外に変換できますか?
また、PreserveSig を使用して例外を抽出できたのに、なぜ GetLastWin32Error メソッドを呼び出す必要があるのでしょうか。
よろしくお願いしますPK
vb6 - VB6 から単純な VC DLL を呼び出す
私はVC6で書かれた単純なDLLを1つの関数で持っています:
そして、次を使用してvb6から呼び出しています:
「dll呼び出し規約が正しくありません」というエラーが表示されますが、その理由がわかりません。何か案は?
.net - DLLImport'ed / P / Invoke'd win32 dllのカスタムタイプ?
こんにちは、
私は現在、.Netアプリケーションで再利用する必要がある機能である古い.dllと格闘しています。これまで、boolなどを返す基本/簡単な関数/メソッドをインポートするようになりましたが、実際には期待しているものもあります(またはreturn).dll内で宣言されている型。
これをどのように処理しますか?.net環境でそのタイプをマップ/作成するにはどうすればよいですか?それは可能ですか?
乾杯と感謝、-Jörg