問題タブ [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 dllをインポートするC#プロジェクトがありますが、dllには次の機能があります。
シリアルパラメータにアクセスしたい。私は実際にシリアルパラメータの1文字を返すようにしていますが、何をしているのかよくわからないので、何が起こっているのかを理解したいと思います。もちろん、それを機能させます。
したがって、dllがアクセスされていることは間違いありませんが、ポインタのない他の関数は正常に機能します。ポインタを処理するにはどうすればよいですか?マーシャリングする必要がありますか?たぶん私はそれを置くために固定された場所を持たなければなりませんか?
説明は素晴らしいでしょう。
ありがとう!リチャード
c# - Windows Mobile で MAPI を使用して電子メールのタイトルを取得するには?
Windows Mobile の PockerOutlook で電子メールのタイトルを取得したいのですが、現在 Microsoft.WindowsMobile.PocketOutlook には次の機能があります。
メッセージング アカウントを列挙します。
メールを送る
SMSを送信
SMS を傍受する
そこで、メールのタイトルを取得するために、MAPI.DLL を DLLImport してその機能を取得したいと考えています。
このリファレンスは C++ で書かれています。データ型が違うのでC#版への変換は難しそうです。C++ で記述された dll ファイルを自分で作成し、C# アプリに DLLImport する必要がありますか?
c++ - Managed C++ - 構成ファイルに基づくさまざまな DLL のインポート
私は現在、複数のクライアントに対して同様の目的を果たすアプリケーションを作成していますが、フィードされたデータを処理する方法を調整する必要があります。本質的には同じ目的を果たしますが、データの配布方法はまったく異なります。
そこで、次のように進めることにしました: -すべての方法で共通の機能を保持する共通のエンジン ライブラリを作成し、異なるエンジンが同じように応答することを保証するデフォルト インターフェイスを提示します。-それぞれの機能方法に固有のエンジンを作成します....それぞれが独自の .dll にコンパイルされます。
したがって、私のプロジェクトは、次のようないくつかのライブラリを含む一連のライブラリで終了します。
ユーザー設定に使用する構成ファイルには、エンジンセクションがあり、使用するエンジンを決定できます。
したがって、コードのどこかで次のことを行います。
問題は...この方法でdllをインポートするにはどうすればよいですか? それは可能ですか?そうでない場合、同様の機能を実現する方法について提案を得ることができますか?
最初にすべての dll をインポートして、使用するエンジンを選択するだけでよいことは承知しています。これらの dll をすべて顧客に出荷する必要があります。ある顧客はあるエンジンを使用し、別の顧客は別のエンジンを使用します。一部のお客様は複数のファイルを使用する可能性があるため、これを外部化して、ユーザーがエンジンの切り替えに構成ファイルを使用できるようにしたいと考えました。
何か案は?
編集:エンジンが実行時に動的にロードされ、プロジェクトですべてが参照されていない場合、各エンジンが同じインターフェイスを提示しても、プロジェクトはコンパイルされないことに気付きました。ですから、それらすべてをプロジェクトに含める以外に選択肢はありませんね。
それはまた、それらすべてが私の顧客に出荷されなければならないことを意味します. 構成内の設定は、エンジン メンバーの初期化に使用するクラスのみを指定します。
また
これらの各エンジンを同じ名前にコンパイルできます。メイン プロジェクトに 1 つの DLL のみをインポートすると、その特定のエンジンが常に使用されます。これにより、私の顧客は、自分の複数のクライアントに対して私たちのアプリケーションを使用できなくなります。彼らが手動でdllを切り替えようとしない限り。ユック
助言がありますか?
編集 #2: この時点でオプションを確認すると、ベース エンジンとすべての子エンジン、および構成を含む 1 つの大きな DLL を作成して、ユーザーが選択できるようにすることもできます。複数の dll を参照してそれらすべてを出荷する代わりに。巨大なものを 1 つだけ用意し、その 1 つだけを出荷/参照します。ニーズに合った 1 つまたは 2 つの小さな dll ではなく、すべての顧客に 1 つの大きな dll を出荷することを意味するため、私はこれがあまり好きではありません。これは私が思いついた最善の解決策です。
元の質問に対するより良い提案や回答をまだ探しています。ありがとう。
c# - C / C ++関数ヘッダーを取得してC#のdllimportで定義する方法を説明するリファレンスはどこにありますか?
setupapi.dllを使用してUSBデバイスの接続を確認しています。64ビットバージョンのWindows(XP、Vista)では正しく機能しません。宣言が完全に正しくないのではないかと思いますが、確認方法がわかりません。MSはdllimport情報を提供していないようですが、すべての関数定義をリストしています。関数ヘッダーとdllimport宣言の間で変換するために使用できるリソースはありますか?
pinvoke.netを使用しましたが、提供されている定義では64ビットを考慮していないようです。
c# - c# の NetServerEnum() の問題
現在のすべての LAN マシンを一覧表示する必要があるアプリケーションを開発しています。
LAN 上のすべてのワークステーションを一覧表示するために、インポート後に NetServerEnum() を使用しました。
プログラムを実行すると、問題なく動作するように見えました。2 台の既存のマシンが正しく検出されました。ただし、必要に応じてリストを更新したい (更新ボタン)。そこで、他のコンピューターの配線をスイッチから切り離し、LAN 上に 1 台のコンピューターのみをレンダリングしました。今、プログラムを実行すると、切断されたマシンがまだリストされています。
これを解決する方法は?
コードは次のとおりです。
c# - リンクされたリストのマーシャリング
重複投稿失礼します。
やあ
DLL からのリンク リストのマーシャリングに問題があります。
------C++ の構造と機能--------
-----------C#宣言-----------
deref2 宣言で FatalExecutionEngine Exception が発生します。リンクされたリストを元に戻し、その内容にアクセスする方法がわかりません。
リンク リストを取得するために作成した C++ コードを次に示します。C#で動作するようなものが欲しいです。
c# - 指定されたモジュールが見つかりませんでした - 64 ビット dll
コンパイルするプラットフォームを変更してdllをx64に変換するためにVC++(VS2008)でコンパイルしようとしたときに、Native Cを使用して記述された32ビットdllがありました。しかし、「x64」プラットフォームでもある C# アプリケーションから dll にアクセスしようとすると、dll のロードに失敗します。dll をアプリケーションにリンクするために Dllimport を使用しました。
Vista で使用しているオペレーティング システムですが、アプリケーションから at dll 関数を呼び出すことができず、dll のロードに失敗したと表示されます。
この問題を解決する方法はありますか。
あなたの助けを楽しみにしています。
よろしく、ガ
dll - dllimport で dll を読み込めません
Stack Overflow は、私たちのすべての説明に最適なグループの 1 つです。C で記述されたネイティブ dll があります。VC++ (VS 2008) を使用してプロジェクトをコンパイルしました。C# アプリケーションを使用して、Dllimport を介して dll 関数を呼び出しました。問題は、dll のロードに失敗することです。dllをロードできませんと表示されます。
dll とアプリケーションの両方を x86 から x64 のプラットフォームにコンパイルしました。この問題を解決するために皆さんが私を助けてくれれば、本当に素晴らしいことです。
dll がロードされていない理由を確認する可能性はありますか。
前もって感謝します。