天天看點

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

這樣就可以了