天天看点

SWIG c# 引用 c++dll

swig 生成 cs,我就省略不说了,网上很多!

我遇到一个问题: cs文件有了,c++的dll也生成了,dll也放到BIn下面了,但是初始化对象的时候还是会报错!

找了好长时间才发现,dll拷贝到Bin下面,不代表网站加载了dll

所以要加载DLL,

1 ,  添加引用using System.Runtime.InteropServices;

2.添加 代码

[DllImport("kernel32.dll", EntryPoint = "LoadLibrary")]
    public static extern IntPtr LoadLibrary(string lpLibFileName);
           

3.   构造函数添加

string path = HttpContext.Current.Server.MapPath("~/Bin");
        LoadDll(path);
           

4,添加函数

public bool LoadDll(string currentDirectory)
    {
        string _path_dll = Path.Combine(currentDirectory, @"FaceCompare.dll");
        IntPtr _dll_addr = LoadLibrary(_path_dll);
        if (_dll_add == IntPtr.Zero)
        {
            return false;
        }
        return true;
    }
           

dll 所依赖的其他dll也要load

这样就可以了