【发布时间】:2014-03-04 00:27:59
【问题描述】:
我正在使用许可库(c++ dll)来开发 c# 应用程序。
我没有那个库的任何代码,那不是 clr。
但我可以使用 pInvoke 将其方法导入 c#,如下所示。
[DllImport("FaceFinding.dll", ExactSpelling = true, CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
unsafe internal static extern int EnrollmentGalleryDBOneToOne(StringBuilder currentFolderPath);
它在调试模式下完美运行。
但这里有问题。
当我制作 Visual Studio 安装程序项目时,我无法在安装程序上导入该 dll 文件,因为那不是 clr。
有没有办法在 c# 安装程序项目中导入非 clr dll?
【问题讨论】:
-
您是否将其包含在您的安装程序中?
-
@DanielA.White 我可以包含它,但只是归档。不是组装。它不适用于已安装的程序。
-
如果您需要 DllImport DLL,它是一个 非托管 DLL,因此它永远不会是 .NET 意义上的“程序集”。如果您的程序由于其他原因无法运行,请在安装后尝试调试它
-
只是一个需要复制的文件,仅此而已。请务必使用所有者的安装说明,可能需要存在其他依赖项,例如 C/C++ 运行时支持 DLL。如果您不确定,请联系他寻求支持,您需要为此付费。坚持使用 MSI 合并模块,这是一个非常合理的要求。