Questions tagged «dllimport»

7
如何在运行时指定[DllImport]路径?
实际上,我有一个C ++(工作中)的DLL,我想导入到我的C#项目中以调用它的功能。 当我指定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中
我有一个托管C#dll,它使用DLLImport使用非托管C ++ dll。一切都很好。但是,我想将该非托管DLL嵌入到托管DLL中,如Microsoft所解释的那样: http://msdn.microsoft.com/zh-CN/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/看到这应该是可能的...

3
什么是[DllImport(“ QCall”))?
.Net库中的许多方法都是用本机代码实现的。那些来自框架本身的标记为[MethodImpl(MethodImplOptions.InternalCall)]。来自非托管DLL的那些标记有[DllImport](例如[DllImport("kernel32.dll")])。到目前为止,没有任何异常。 但是在写另一个问题的答案时,我发现有很多用标记的方法[DllImport("QCall")]。它们似乎是.Net的内部实现(例如GC._Collect())。 我的问题是:究竟是什么[DllImport("QCall")]意思?[DllImport("QCall")]和之间有什么区别[MethodImpl(MethodImplOptions.InternalCall)]?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.