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

c++ - msvcr90.dll を簡単にインストール!(C++ 再頒布可能パッケージなし)

私のプログラムは、pythonファイルをexeファイルに変換したものです。この exe ファイルの問題は、python がインストールされていないと実行されず、mscvr90.dll しか必要ないことです。この dll ファイルのためだけに C++ 再頒布可能パッケージをインストールしたくありません。あのでっかいパッケージ!この msvcr90.dll をアプリケーション フォルダにコピーしても、機能しません。

Pythonをインストールしたときのmsvcr90.dllのファイルパスは次のとおりです。

C:\windows\WinSxS\x86_Microsoft.VC90.CRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_d08d0375

Pythonがこのファイルをどのようにインストールするかはよくわかりませんが、簡単な方法が必要です。

何か案は?

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

c# - kernel32 から DllImport しようとすると奇妙な例外が発生する

私はこの特定の機能を何ヶ月も使用していますが、今日は機能しなくなりました。理由は想像できませんし、否定するつもりもありません。何かアイデアがあれば教えてください。

私はそのような方法で関数をロードしています:

そして、私はそれをこのように使用しようとします:

前述のように、これは何年にもわたって機能していましたが、今後はこの例外がスローされます。

System.EntryPointNotFoundException: DLL 'kernel32' で 'GetPrivateProfilestring' という名前のエントリ ポイントが見つかりません

なぜこれが起こるのでしょうか?dllが変更された可能性はありますか(Windows Updateなどによって)?もう見つからないだけかもしれませんが、その場合、例外は異なりますか? これはありそうもないことですが、これは常に機能しており、ソースコードは変更されていないため、何も排除しないと言ったように...

更新: 奇妙なことに、大文字化が役に立ちましたが、現在は機能しているようです。しかし、なぜこれが起こったのか、そしてなぜ今起こったのか、私はまだ興味がありますか? 私はそれが今何ヶ月も働いたことを保証することができます.

エラーは私のマシンでのみ発生したため(とにかく私が知る限り)、それを変更してソフトウェアをどこでも更新することを少し恐れていますが、古い方法はさまざまな PC と構成で 6 か月以上にわたって運用されています。 .

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

c# - C ++ Dllを作成し、C#から呼び出します

私のプロジェクトでは、C++サンプルコードが付属するデバイスを入手しました。コードは問題なく、デバイスは期待どおりに機能しています。

ただし、他のすべてのデバイスは現在C#インターフェイスを使用しているため、C#インターフェイスと通信するために必要です。

そこで、ドライバー用のDLLラッパーを作成することを計画しています。(適切なインターフェイスを備えたソースコードから)独自のC ++ライブラリを作成し、DLLImportを使用してC#からこのC ++ライブラリを呼び出します(そこでインターフェイスを呼び出すだけです)。

この方法で実行できると確信していますが、C ++ライブラリを作成してC#から使用したことはまだありません。だから、誰かが私の問題に合うチュートリアルを紹介してもらえますか?

私はC++/ C#intVS.NET2008を使用しています。

よろしく、Maksud

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

c# - C# を使用した PInvoke 文字列マーシャリングのコードページの指定

PInvoke を使用して DLL を呼び出しています。DLL の関数は、コードページ 437 の C 文字列を返します。

.Net マーシャリングで文字列を Unicode に変換する方法はありますか、または DllImport() と MarshalAs() に与える必要があるパラメーターと、Unicode で出力を取得するために使用する変換関数を誰かが提案できますか?

参考までに、これは私が現在使用している DllImport です。

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

c# - vb6 から c# 3.5 への dllimport の変換

DLL から関数をインポートする VB6 のコードがあり、byVal および byRef キーワードを使用しています。そのコードを C# 3.5 に変換したいと考えています。

  1. 文字列の Unicode エンコーディングに問題はありますか?

  2. vb6 の「byRef」である変数を C# コードの「ref」変数に宣言する必要がありますか?

  3. 関数が文字列を編集できるようにしたい場合は、戻り値がVB6コードによって送信される文字列に「byVal」パラメーターとして入力されることが継ぎ目です。 ? この概念は私の C# コードでも機能しますか?

VB6 の関数宣言をコピーしてみました。パラメーターの型は int、long、string のみです。「byVal」キーワードがあった場所を空のままにし、「byRef」キーワードを C# の「ref」キーワードに置き換えただけで、コードが機能しません。

VB6 コード:

私のC#3.5翻訳:

助けてください、私はすでにこれに丸一日を費やしました:p ....

最後に、自動プロジェクト コンバーター (VB6 から VB.NET 2008 へ) を使用して関数呼び出しを VB.NET ライブラリに変換し、C# リファレンスを使用して呼び出しました。

ありがとう。

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

c++ - C++でVB.NETDLLファイルを使用する-クラスは抽象的です

アンマネージC++プロジェクトで使用しているVB.NETDLLファイルを作成しました。

クラスのオブジェクトを作成しようとすると、エラーが発生します。

抽象クラスをインスタンス化できません

なぜ私のクラスは抽象的でしょうか?抽象化されないように変更するにはどうすればよいですか?

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

mono - Mono(Linux)でのDLLImportのクラッシュ:icall_wrapper_mono_marshal_free

LinuxでのMonoInteropの問題で立ち往生しています。C#アセンブリで使用する必要のあるネイティブ共有ライブラリ(Lazarus製)があります。共有ライブラリは、WindowsおよびLinux上のMono C#アセンブリによって使用されます。

アセンブリは、実行時にDllImportを介して共有ライブラリをロードし、ファイルを生成して新しいファイルの名前の文字列を返すエクスポートされた関数を呼び出します。共有ライブラリの関数は正常に機能しますが、Linuxでは、関数が戻ると、MonoランタイムがObject.__icall_wrapper_mono_marshal_freeでクラッシュします。これは、WindowsでMonoを使用すると正常に機能します。

いくつかのテストを行ったところ、共有ライブラリが実際に機能していることがわかりました(新しいファイルは指定されたパスで生成されます)が、最終的にランタイムがクラッシュします。intを返すエクスポートされた関数を使用すると機能するため、ランタイムには、結果の文字列をアセンブリに戻すマーシャリングに問題があるようです。

私の共有ライブラリは次のようなものです。

呼び出し元のC#アセンブリは次のようになります。

私はいくつかの代替案を試しました(エクスポートされた関数からネイティブ文字列を返す、アセンブリと共有ライブラリで呼び出し規約をstdcallに変更する、DllImportの文字セットを変更する)。

私は何かが足りないと確信していますが、Googleでこの問題について何も見つかりませんでした。

私のクラッシュは次のようになります。

何か案は?

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

c# - DLLImportを使用してオブジェクトをインポートする

c ++クラスのdll(SLABHIDDevice.dll)があります。このdllの機能をC#.netアプリケーションで使用しようとしています。dllには、このようなステートメントで簡単に使用できるいくつかのメソッドが含まれています...

(ここでいくつかの用語が間違っている場合は、dllを使用するのは初めてです)

SLABHIDDevice.dllのドキュメントには、クラスオブジェクトCHIDDeviceも含まれていると記載されています。そのオブジェクトには、Open()などのメンバー関数の全リストがあります。

上記と同じ構文を使用してOpen()をインポートしようとすると、Open()関数のエントリポイントが見つからないというエラーが表示されます。これは、Open()がCHIDDeviceのメンバーであるためですか?

これはDUMPBINからのdllの構成です...下の3つの関数は、私が動作させることができる唯一の関数ですか?他の構文を取得するために使用する必要のある構文を誰かが知っていますか?関数名の前にある疑問符はどういう意味ですか?

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

python - Pythonでdllをロードするとき、dir関数はそのメソッドを表示しますか?

このコードはdllからのメソッドを示していますか?

そうでない場合、Pythonで.dllメソッドをどのように確認できますか?

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

c# - クライアント PC で参照できないネットワーク共有から .dll を動的にロードする -- WCF?

PnP Composite Application Guidance を使用して WPF アプリケーションを設計しています。アプリケーションは、イントラネット内でローカルに実行されます。

モジュールは、ユーザーの役割に基づいて動的にロードされます。したがって、モジュールはネットワーク共有を介してアプリケーションにアクセスできる必要があり、クライアント マシンからアクセスできる必要があります。

私がやりたいことは、スタッフがアクセスできない場所にすべてのモジュール .dll を保持することですが、要求されたとき、および現在のユーザーがそのモジュールを使用するために認証されているときに、それらを複合アプリケーションに提供できるようにすることです。

私の考えでは、(サーバー上の) WCF サービスは .dll リポジトリにアクセスできますが、どのクライアント マシンもそれにアクセスできません。認証もサービスによって処理されます。

どういうわけか物事を複雑にしすぎているのではないかと思います。

これは、単純なファイルシステム構成と、共有フォルダーにアクセスするときに資格情報をプログラムで渡すことで実行できるものですか? これを行うと、呼び出し元のアプリケーションにのみアクセスが許可されますか? それとも、ログオンしているユーザーが共有フォルダーに移動できるようになりますか?

これは、何らかの形で、MEF またはその他のプロジェクトで解決された問題ですか? (これが LMGTFY にふさわしくないことを願っています。何も思いつきませんでした。)