DLLImport:C#引用第三方DLL动态链接库

最近一个项目,使用到第三方公司提供的算法模型,不会引用,这里让他们程序员写了一个demo,能使用,这里就简单写一下。

新建类LiXue,先需要添加引用

using System.Runtime.InteropServices;

动态链接库调用:“ [DllImport(@"D:\LandGZ_ShangTi.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]”这里面路径是写死了

类内代码及方法    “public static extern “是固定写法,“int GZ_ShangTi_LiXue”以及后面是方法以及返回的结果类型。

方法中的 " out Object vjs, out Object vt, out Object vcxl, out Double zhdl, out Double jkll"是方法的输出结果。意思是这个意思,

当 返回为1 的时候,计算成功,可以 使用vjs等输出结果的数据

 class LiXue
    {
        //调用路径写死了
        [DllImport(@"D:\LandGZ_ShangTi.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern int GZ_ShangTi_LiXue(Object vbase, Object vcs, Object vjxj, Object vfwj, Object vguige, Object vgrade,
           Object vdin, Object vdout, Object vl, Object vxz, Object vqfqd, Object vklqd, Object vtxml, Object vmcxs,
          Object vjhyl, Object vnqfyl, Object vcasl, Object vcasd,
          out Object vjs, out Object vt, out Object vcxl, out Double zhdl, out Double jkll);
    

在点击方法里些如下代码,用于调用DLL的方法

 Object[] vbase = { 3600, 2, 20, 100, 0.86, 0.65, 1.01, 10, 0.2, 15, 12.5, 1000, 960, 0.0000113, 2 };
            Object[] vcs = { 26.76, 54.11, 82.14, 109.88, 138.19, 166.08, 193.95, 221.89, 250.16, 277.99, 307.08, 336.23, 365.24, 394.43, 423.5, 452.77, 482, 507.87, 536.77, 565.81, 594.9, 624.05, 653.06, 682.25, 711.32, 740.59, 769.82, 798.64, 827.4, 856.19, 885.06, 913.69, 942.58, 971.54, 1000.63, 1029.57, 1058.33, 1087.16, 1116.47, 1145.35, 1174.26, 1202.81, 1231.57, 1260.51, 1289.17, 1317.79, 1346.56, 1375.52, 1404.31, 1433.3, 1462.28, 1491.28, 1520.24, 1548.88, 1578.18, 1607.12, 1635.99, 1664.87, 1693.95, 1722.89, 1751.63, 1780.61, 1809.53, 1838.6, 1867.6, 1896.53, 1925.61, 1954.69, 1983.32, 2012.52, 2041.66, 2070.71, 2099.77, 2128.85, 2158.03, 2187.07, 2216.17, 2245.35, 2274.38, 2303.73, 2333.06, 2362.09, 2391.24, 2420.41, 2449.7, 2478.77, 2507.79, 2536.64, 2565.45, 2594.49, 2623.45, 2651.96, 2681.23, 2710.3, 2739.04, 2768.18, 2797.25, 2826.08, 2854.89, 2883.68, 2912.3, 2941.39, 2969.94, 2998.54, 3027.57, 3056.64, 3085.86, 3114.77, 3143.79, 3172.8, 3201.6, 3230.2, 3259.18, 3287.95, 3316.75, 3345.96, 3375.23, 3404.18, 3432.97, 3461.74, 3490.81, 3519.88, 3548.94, 3578.06, 3607.33, 3636.43, 3665.2, 3694.01, 3723.06, 3752.14, 3781.14, 3810.43, 3839.21, 3868.55, 3897.52, 3926.35, 3955.49, 3984.33, 4013.41, 4042.7, 4071.71, 4100.74, 4129.58, 4158.58, 4187.61, 4216.54, 4245.53, 4274.73, 4303.8, 4332.69, 4361.85, 4390.98, 4420.08, 4449.1, 4477.79, 4505.07, 4534.15, 4563.03, 4592.1, 4621.18, 4650.2, 4679.47, 4708.51, 4737.14, 4766.1, 4794.8, 4824.13, 4853.25, 4882.56, 4911.14, 4940, 4969.01, 4997.9, 5026.49, 5055.53, 5084.45, 5113.44, 5142.68, 5171.5, 5200.54, 5229.48, 5258.3, 5287.07, 5316.14, 5344.88, 5374.06, 5403.13, 5431.94, 5461.14, 5490.37, 5519.67, 5548.77, 5577.88, 5606.58, 5635.65, 5664.43, 5693.19, 5710, 5720, 5738.93, 5767.98, 5796.97, 5825.71, 5854.47, 5883.59, 5912.81, 5941.78, 5970.56, 5991.91, 6021, 6049.55, 6078.15, 6107.18, 6136.25, 6165.47, 6194.38, 6223.4, 6252.41, 6281.21, 6309.81, 6338.79, 6367.56, 6396.36, 6425.57, 6454.84, 6483.79, 6512.58, 6541.35, 6570.42, 6599.49, 6628.79, 6657.56, 6686.36, 6715.57, 6744.68, 6773.66, 6802.58, 6831.49, 6860.62, 6870.37, 6895 };
            Object[] vjxj = { 0.02, 0.01, 0.46, 0.25, 0.23, 0.24, 0.48, 0.43, 0.45, 0.48, 0.62, 0.67, 0.74, 0.66, 0.77, 0.63, 0.68, 0.21, 0.12, 0.11, 0.22, 0.36, 0.47, 0.58, 0.26, 0.58, 0.3, 0.14, 0.26, 0.43, 0.35, 0.13, 0.32, 0.32, 0.4, 0.41, 0.27, 0.21, 0.22, 0.29, 0.44, 0.47, 0.37, 0.52, 0.19, 0.3, 0.31, 0.54, 0.4, 0.35, 0.5, 0.39, 0.23, 0.52, 0.33, 0.5, 0.41, 0.32, 0.4, 0.47, 0.59, 0.75, 0.75, 0.6, 0.49, 0.51, 0.44, 0.45, 0.69, 0.65, 0.44, 0.66, 0.51, 0.61, 0.76, 0.83, 0.5, 0.82, 0.93, 0.92, 0.95, 0.96, 0.94, 0.98, 1, 0.86, 1.01, 1.03, 1.04, 1.2, 1.06, 1.04, 1.02, 1.2, 1.17, 0.94, 0.83, 1, 0.91, 0.85, 0.96, 0.81, 0.81, 0.66, 0.56, 0.6, 0.62, 0.55, 0.62, 0.55, 0.52, 0.54, 0.55, 0.59, 0.59, 0.5, 0.51, 0.47, 0.47, 0.49, 0.54, 0.45, 0.47, 0.25, 0.64, 0.61, 0.52, 0.66, 0.75, 0.72, 0.77, 0.58, 0.18, 0.31, 0.46, 0.27, 0.61, 0.65, 0.82, 0.87, 0.9, 0.85, 0.88, 1.03, 0.78, 1, 1.12, 0.93, 0.86, 0.88, 0.95, 0.87, 1.04, 1.2, 1.19, 0.91, 0.79, 0.73, 0.57, 0.42, 0.44, 0.43, 0.55, 0.5, 0.39, 0.64, 0.74, 0.86, 0.88, 0.95, 0.96, 1.04, 0.83, 0.42, 0.43, 0.5, 0.55, 0.72, 0.53, 0.58, 0.44, 0.28, 0.16, 0.3, 0.44, 0.49, 0.47, 0.51, 0.46, 0.47, 0.58, 0.71, 0.74, 0.65, 0.78, 0.72, 0.59, 0.68, 1.85, 5.6, 12.22, 16.64, 22.2, 25.45, 30.71, 36, 42.08, 47.3, 52.22, 58.52, 63.85, 68.62, 73.53, 78.85, 84.23, 88.77, 89.5, 89.4, 89.6, 89.5, 90.28, 89.1, 90.16, 89.3, 90, 91, 89.66, 90.24, 89.2, 90.71, 92.1, 91.8, 91.3, 90, 89.84, 89.62, 89.42, 89.3, 89.11, 89, 89 };
            Object[] vfwj = { 155.13, 148.32, 166.32, 171.87, 175.83, 179.72, 193.13, 202.86, 213.3, 187.24, 175.1, 177.66, 153.88, 140.87, 42.27, 29.64, 35.12, 343.61, 70.73, 143.21, 269.46, 227.72, 185.42, 220.73, 199.72, 160.79, 158.06, 247.85, 165.86, 68.01, 68.44, 254.8, 341.38, 265.84, 13.73, 30.77, 30.2, 96.89, 125.03, 130.11, 180.58, 221.37, 270.16, 248.15, 256.95, 269.81, 240.87, 254.31, 298.04, 291.63, 293.28, 304.29, 256.35, 263.91, 258.4, 233.62, 218.2, 215.58, 222.95, 227.31, 195.78, 215.33, 224.7, 215.34, 205.81, 204.46, 211.68, 211.72, 206.01, 227.03, 164.16, 227.09, 241.58, 216.91, 339.17, 226.39, 240.55, 226.03, 234.6, 253.07, 228.96, 234.31, 235.3, 229.73, 249.52, 248.81, 249.51, 250.03, 249.55, 234.91, 246.66, 252.62, 232.48, 239.9, 244.78, 233, 230.51, 245.73, 243.55, 230.31, 243.41, 240.72, 276.95, 227.19, 220.37, 232.36, 256.91, 251.02, 243.44, 216.67, 212.07, 217.13, 203.56, 205.3, 195.28, 185.7, 182.36, 176.09, 168.21, 155.2, 155.25, 150.45, 195.17, 142.41, 21.31, 34.01, 346.75, 281.33, 308.46, 324.18, 329.28, 323.23, 302.82, 221.9, 256.95, 213.88, 215.84, 257.15, 224.23, 318.41, 190.55, 186.33, 177.53, 181.49, 167.27, 178.29, 177.25, 155.72, 169.23, 164.57, 146.86, 132.92, 144.27, 153.5, 159.79, 169.61, 169.04, 172.92, 171.41, 156.31, 153.15, 156.2, 159.53, 160.15, 149.53, 144.25, 159.79, 165.84, 170.96, 165.94, 169.9, 172.17, 174.89, 134.68, 133.05, 125.76, 122.19, 113.19, 114.14, 122.78, 125.49, 107.76, 164.94, 177.9, 169.91, 153.62, 139.29, 131.5, 129.28, 117.23, 124.79, 132.87, 134.14, 113.8, 124.78, 130.7, 134.08, 341, 336.19, 335.08, 334.69, 319.1, 310.74, 300.54, 292.19, 285.18, 281.83, 277.5, 277.31, 277.83, 277.33, 277.62, 277.65, 276.41, 276.31, 276.14, 276.29, 276.31, 276.53, 277.19, 277.4, 276.35, 276.41, 276.14, 277.77, 277.93, 278.23, 277.81, 277.53, 276.8, 276.68, 276.54, 276.75, 276.83, 276.71, 276.68, 276.53, 276.81, 276.92, 276.77, 276.77 };
            Object[] vguige = { "2.875" };
            Object[] vgrade = { "L-80,N-80" };
            Object[] vdin = { 62 };
            Object[] vdout = { 73.03 };
            Object[] vl = { 6800 };
            Object[] vxz = { 9.17 };
            Object[] vqfqd = { 689000 };
            Object[] vklqd = { 645.13 };
            Object[] vtxml = { 206850 };
            Object[] vmcxs = { 0.2 };
            Object[] vjhyl = { 76.9 };
            Object[] vnqfyl = { 72.9 };
            Object[] vcasl = { 6800 };
            Object[] vcasd = { 200 };
            Object vjs, vt, vcxl;
           
            Double zhdl, jkll;
            label1.Text = " ";
//调用LiXue中的方法
            int a = LiXue.GZ_ShangTi_LiXue(vbase, vcs, vjxj, vfwj, vguige, vgrade, vdin, vdout, vl, vxz, vqfqd, vklqd, vtxml, vmcxs, vjhyl, vnqfyl, vcasl, vcasd,
             out vjs, out vt, out  vcxl, out  zhdl, out  jkll);
            listBox1.Items.Clear();
            if (a == 1)
            {
                Double[] Avjs = (Double[])vjs;
                Double[] Avt = (Double[])vt;
                Double[] Avcxl = (Double[])vcxl;
                Double Azhdl = zhdl;
                Double Ajkll = jkll;
                label1.Text = "计算成功!";
                listBox1.Items.Add("井深   " + ",    " + "轴力(kN)    " + ",     " + "   侧向力(kN/m)");
                for (int j = 0; j < Avjs.Length; j++)
                {
                    listBox1.Items.Add(Avjs[j].ToString() + ",    " + Avt[j].ToString() + ",     " + Avcxl[j].ToString());
                }
            }
            else
                MessageBox.Show("计算失败");


        }

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值