[英]Including DLL in C# Class Library
我想引用/包含和C ++ dll文件到我的C#类库中,使用普通的C#Windows窗体,我只是将dll放在工作目录中,这似乎不适用于类库,我如何找到它.dll?
[System.Runtime.InteropServices.DllImportAttribute("ve.dll", EntryPoint=<MethodName>, CallingConvention = System.Runtime.InteropServices.CallingConvention.Cdecl)]
那是对方法的调用,而我包含的DLL在构建文件夹中。
您可能需要一个后生成步骤,以确保在重新编译应用程序时将DLL复制到您的生成输出文件夹中。 完成此操作后, DLLImport
属性应该能够使用文件的短名称查找DLL,而无需任何路径信息(因为它对于执行程序集而言是本地的)。
C ++ dll必须位于托管exe本地(如果托管exe引用c#dll,它将在构建时将该本地复制到自身)或位于系统PATH环境变量中的某个位置。
您可以将c ++ dll添加到c#项目(添加->现有项->所有文件),并将Copy to Output Directory
设置为Copy if newer
或Copy Always
,并将Build Action
设置为None
(IIRC为默认选项)
如果不是托管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,然后在您的路径中查找
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.