C# 自适应调用64位 32位DLL

参考网上的经验交流,加上自己的实践总结,分享给大家,纪念两天的奋斗历程。

1、标准.NET的DLL,检查编译方式,确保为 ANY CPU,即可自适应。

2、标准SDK的DLL

    编译两个DLL,一个WIN32,一个X64
    用别名方式声明后在C#中封装

    static bool is64bit = (IntPtr.Size == 8);
            [DllImport("t64.dll", EntryPoint = "test")]
    static extern int test64(byte[] contextArray);
    [DllImport("t32.dll", EntryPoint = "test")]
    static extern int test32(byte[] contextArray);
    public static int test(byte[] contextArray)
    {
        return is64bit ? test64(contextArray) : test32(contextArray);
    }

3、混合型编译的DLL

    一个外壳DLL,两个具体平台的DLL
    以最常见的 system.data.sqlite.dll 为例

    按以下目录结构发布即可
    system.data.sqlite.dll
        x64\SQLite.Interop.dll
        x86\SQLite.Interop.dll
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页