問題タブ [interopservices]
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# から渡された構造体に C++ の構造体に値を代入する際の問題
C++ で記述された DLL に構造体の配列を渡す C# の関数があります。構造体は int のグループであり、DLL 内のデータを読み取ると、すべての値が正常に出力されます。ただし、C++ から要素に書き込もうとすると、C# で読み込もうとすると値が表示されません。
C#
C++
c# - c# から未登録の dll を使用するにはどうすればよいですか?
C# 経由でアクセスする必要があるカスタム dll (登録されていません) があります。DLL を登録せずにこれを行うにはどうすればよいですか?
編集: C++ dll です。
runtime - System.Runtime.InteropServices.ComTypesを使用した#if!USING_NET11とは何ですか。#endifはどういう意味ですか?
次のコードはどういう意味ですか、それは何をしますか?本当に必要ですか?
私のプロジェクトファイルでは、dshownetラッパーを使用してWebカメラキャプチャを実装しました。上記のコードはForm1.csファイルにありました。
c# - IExpandoとは何ですか?どこで使用されますか?
私は(あなたがそうするように...)リフレクターを使用してmscorlibのタイプを参照していて、System.Runtime.InteropServices.Expando名前空間でIExpandoインターフェースに出くわしました。
リフレクターで検索を行い、MSDNをチェックアウトしましたが、mscorlibのどのタイプもこのインターフェイスを実装していないようです。MSDNにはコード例もありません。
誰かがこのインターフェースを自分のコードで実装しましたか?
誰かがそれが正確に何のために使われるか知っていますか?
ありがとう
c# - COMException (0x80040154): AxAcroPDFLib の使用時にクラスが登録されていません
AxAcroPDF を使用すると、次のエラーが発生します。
System.Runtime.InteropServices.COMException (0x80040154): クラスが登録されていません (HRESULT からの例外: 0x80040154 (REGDB_E_CLASSNOTREG))
エラーをスローする行は
解決策を知っている人は助けてください
c# - C#を使用して構造体でC ++関数を呼び出す
私はc++ dllを持っています。この dll を C# コードで使用する必要があります。このdllで:
構造体で関数を呼び出すにはどうすればよいですか? 私はこれを試します:
スローされる例外: 「DLL に 'ClientsAddUser' という名前のエントリ ポイントが見つかりません」。
この関数が構造体にない場合、例外はスローされないと思います。
c# - PInvokeでI8タイプとしてマーシャルする方法は?
InterOpServicesを使用して外部dllに渡したいUInt32値があります。
アンマネージコードのプロトタイプは次のとおりです。
呼び出しコードは次のとおりです。
オブジェクト値「myValue」にI8タイプとして渡したい。
これはどのように行うことができますか?
.net - Marshal.Copy vs ReadProcessMemory / WriteProcessMemory win32 api - 同じプロセスで
ReadProcessMemory
Windows .NET (C#/VB.net) アプリケーションで/ WriteProcessMemory
overを使用Marshal.Copy
してアプリケーションのプロセスのメモリ (他のプロセスのメモリではなく) から読み書きすることの主な違い、長所と短所を誰かが概説できるかどうか疑問に思っています。プロセス)。特に、プロセスのメモリ内の任意のアドレスを含む操作と、メモリ ブロックをバイト配列として扱う操作 (つまり、生データの読み取り/書き込み) の場合。
/が機能Marshal.Copy
するすべての場合に機能しますか、それともより制限されていますか?ReadProcessMemory
WriteProcessMemory
Marshal.Copy
の実装はReadProcessMemory
/ WriteProcessMemory
API を内部的に使用していますか?
明確にするために:私は、他のプロセスのメモリではなく、呼び出し(所有)プロセスのメモリからの読み取り/書き込みについてのみ話しています!
ありがとう。
c# - C# で Word 文書を作成する
Microsoft Office 相互運用機能を使用して Word 文書を作成しようとしています。ドキュメントには、画像と下の表の内容が含まれている必要があります。しかし、コンテンツを追加すると、必要な方法で追加されません。
以下にサンプルコードを用意しました。
c# - C# での C/C++ ルーチンとのインターフェイスでリップが発生する
C# Windows フォームアプリケーションで使用したいベンダーの API 呼び出しがあります。問題は、どのP/Invokeを試しても、呼び出しがスタックのバランスを崩したことを示す行でクラッシュが発生することです。私はベンダーと協力してみましたが、彼らは Visual Studio 2012 を持っておらず、C# や.NETの経験もありません。数回メールをやり取りした後、彼らは基本的に問題を解決しました。
公式の C/C++ 宣言は次のとおりです。
これは、私が試した最近の P/Invoke DLLImport 行です。
実際のエラー メッセージは次のとおりです。
件名: PInvokeStackImbalance が検出されました
P/Invoke 関数 '' の呼び出しにより、スタックのバランスが崩れています。これは、マネージド PInvoke 署名がアンマネージド ターゲット シグネチャと一致しないことが原因である可能性があります。P/Invoke シグネチャの呼び出し規約とパラメーターがターゲットのアンマネージド シグネチャと一致することを確認します。
void 戻り型を入れても、いろいろ試しました。戻り値の型を使用しないようにしました。Strings、StringBuilders、IntPtrs の代わりに試してみました。何を試しても、何も機能しません。
ここでスタック オーバーフローに関する記事を読んだ後、文字列を返すことは危険であり、決して行うべきではないことをベンダーに伝えました。彼らの反応は次のとおりです。
「そのページに記載されている文字列を返す問題は、私たちの関数には当てはまりません。それらは静的に割り当てられた文字列へのポインターを返すため、解放する必要はありません (また、解放しようとしてはいけません)。次のようになります。 「UnmanagedType.LPStr」は機能するはずです (ただし、IntPtr も適切な変換またはキャストで機能するはずです)。
更新 #1: コメントで述べたように、この投稿まで ulong ではなく uint を使用していました。比較の見栄えを良くしただけだと思いました。uint と ulong の両方が機能しません。
更新 #2: 実際の関数名を指定すると役立つ場合があります。アルマジロのCreateCodeShort3Aです。今後は、純粋な .NET を使用しますが、まだそれとのインターフェイスが必要です。現時点では、それは実際には不可能です。それ以上に、この問題は、P/Invoke のように一見単純に見えるものを解決できない理由に興味をそそられました。果たして、バリエーションはいくつあるのだろうか。(深刻な質問ではありません)。