タグ付けされた質問 「dllimport」

7
実行時に[DllImport]パスを指定するにはどうすればよいですか?
実際、C#プロジェクトにインポートして関数を呼び出すC ++(動作)DLLを取得しました。 DLLへのフルパスを指定すると、次のように機能します。 string str = "C:\\Users\\userName\\AppData\\Local\\myLibFolder\\myDLL.dll"; [DllImport(str, CallingConvention = CallingConvention.Cdecl)] public static extern int DLLFunction(int Number1, int Number2); 問題は、それがインストール可能なプロジェクトになることです。そのため、ユーザーのフォルダーは、実行されるコンピューター/セッションによっては同じではありません(例:pierre、paul、jack、mum、dad、...)。 だから私は私のコードを次のようにもう少し一般的にしたいと思います: /* goes right to the temp folder of the user "C:\\Users\\userName\\AppData\\Local\\temp" then go to parent folder "C:\\Users\\userName\\AppData\\Local" and finally go to the DLL's folder "C:\\Users\\userName\\AppData\\Local\\temp\\myLibFolder" */ string str = …
141 c#  c++  dll  constants  dllimport 

5
アンマネージDLLをマネージC#dllに埋め込む
DLLImportを使用してアンマネージC ++ dllを使用するマネージC#dllがあります。すべてがうまく機能しています。ただし、Microsoftが説明しているように、そのアンマネージDLLをマネージDLL内に埋め込みたいと思います。 http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.dllimportattribute.dllimportattribute.aspx そこで、アンマネージdllファイルをマネージdllプロジェクトに追加し、プロパティを「埋め込みリソース」に設定して、DLLImportを次のように変更しました。 [DllImport("Unmanaged Driver.dll, Wrapper Engine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null", CallingConvention = CallingConvention.Winapi)] ここで、「ラッパーエンジン」は、マネージDLLのアセンブリ名です。「アンマネージDriver.dll」は、アンマネージDLLです。 実行すると、次のようになります。 アクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED)) 私はMSDNとhttp://blogs.msdn.com/suzcook/からそれが可能であると思われているのを見ました...
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.