在C#类库中包含DLL

时间:2015-10-28 16:07:23

标签: c# class-library

我想将/ include和C ++ dll文件引用到我的C#类库中,使用普通的C#窗体我只是将dll放在工作目录中,这对类库来说似乎不起作用,我怎么得到它找到.dll?

[System.Runtime.InteropServices.DllImportAttribute("ve.dll", EntryPoint=<MethodName>, CallingConvention = System.Runtime.InteropServices.CallingConvention.Cdecl)]

这是对方法的调用,我所包含的DLL位于构建文件夹中。

3 个答案:

答案 0 :(得分:2)

您可能需要一个构建后步骤,以确保在重新编译应用程序时将DLL复制到构建输出文件夹。一旦完成,DLLImport属性应该能够使用文件的短名称找到DLL,而不需要任何路径信息(因为它将是执行程序集的本地)。

答案 1 :(得分:2)

c ++ dll需要是托管exe的本地(如果托管exe引用c#dll它将在构建时将其本地复制到自身)或者在系统PATH环境变量中的位置。

您可以将c ++ dll添加到c#项目(添加 - &gt;现有项目 - &gt;所有文件)并将Copy to Output Directory设置为Copy if newerCopy Always并设置{{1 } Build Action(IIRC是默认选项)

答案 2 :(得分:1)

如果它不是托管DLL,则需要使用DllImport属性。假设DLL已导出函数。您可以使用 dumpbin / exports

检查导出的函数名称
private const string DLLPATH = "MyDLL.dll";

[DllImport(DLLPATH, EntryPoint = "GetDLLStatus")]
public static extern int GetDLLStatus();

[DllImport(DLLPATH, EntryPoint = "SomeOtherFunction")]
public static extern float SomeOtherFunction();

DllImport将首先在应用程序目录中查找DLL,然后查看路径

相关问题