• 2017.10.29 C/C++/C#程序如何打成DLL动态库


    C/C++程序如何打成DLL动态库:

    **1.在VS中新建main.h,添加如下内容:**
    extern "C" _declspec(dllexport) int onLoad();
    
    **2.新建main.cpp,并包含如下.h头部,然后实现该定义函数onLoad():**
    #include "mainFunc.h"
    int onLoad()
    {
        //func....
    }
    
    3.执行程序,生成对应DLL
    
    4.使用该DLL:
    
    i.在要使用的文件中声明:
    
    形式:[DllImport("DllName")]
    
    [DllImport("kernel32")]//返回取得字符串缓冲区的长度
    private static extern long GetPrivateProfileString(string section, string key,
    string def, StringBuilder retVal, int size, string filePath);
    
    ii.然后和其他函数一样调用:
    
    GetPrivateProfileString(Section, Key, NoText, temp, 1024, iniFilePath);
    

    C#程序如何打成DLL:

    
    方法1:图形界面的类库工程
    1.文件->新建项目->Visual C#->类库,输入项目名称即DLL类库的名称如FuncUtil,确定,新建类库项目;
    2.然后按照自己的功能需求新建C#源文件,可以有若干个.cs源文件,源文件间也可以相互调用,但必须有一个主类提供通用方法供外部调用(public method);
    
    3.点击生成->生成FuncUtil,程序就会编译并生成FuncUtil.dll文件;
    
    4.将如上生成的DLL文件以引用的方式导入到需要调用该DLL的项目中.
    5.调用方式和其他C#DLL的引用方式相同:
    
    如:
    
    using ComDll; //头部引用
    
    Communicate comm = new Communicate(); // 主函数调用
    comm.doSth();
    
    

    方法2:csc打包命令打成DLL

    // File: Add.cs  
    namespace UtilityMethods
    {
        public class AddClass 
        {
            public static long Add(long i, long j) 
            { 
                return (i + j);
            }
        }
    }
    
    
    ...
    
    
    // File: Mult.cs 
    namespace UtilityMethods 
    {
        public class MultiplyClass
        {
            public static long Multiply(long x, long y) 
            {
                return (x * y); 
            }
        }
    }
    
    
    ...
    
    
    // File: TestCode.cs 
    
    using UtilityMethods;
    
    class TestCode
    {
        static void Main(string[] args) 
        {
            System.Console.WriteLine("Calling methods from MathLibrary.DLL:");
    
            if (args.Length != 2)
            {
                System.Console.WriteLine("Usage: TestCode <num1> <num2>");
                return;
            }
    
            long num1 = long.Parse(args[0]);
            long num2 = long.Parse(args[1]);
    
            long sum = AddClass.Add(num1, num2);
            long product = MultiplyClass.Multiply(num1, num2);
    
            System.Console.WriteLine("{0} + {1} = {2}", num1, num2, sum);
            System.Console.WriteLine("{0} * {1} = {2}", num1, num2, product);
        }
    }
    /* Output (assuming 1234 and 5678 are entered as command-line arguments):
        Calling methods from MathLibrary.DLL:
        1234 + 5678 = 6912
        1234 * 5678 = 7006652        
    */
    

    csc /target:library /out:MathLibrary.DLL Add.cs Mult.cs
    将Add.cs, Mult.cs打包成 MathLibrary.DLL

  • 相关阅读:
    web前端开发,一种立杆见影的编程乐趣
    SqlServer按照指定顺序对字段进行排序
    快速排序
    Jetty 的工作原理以及与 Tomcat 的比较
    windows Mysql备份脚本
    PHP 扩增mysql
    MySQL Master/Slave Master/Master 机制
    读取static 中读取SRC目录下的配置文件
    [高可用性] 负载均衡,会话保持,session同步
    Spring AOP配置选项
  • 原文地址:https://www.cnblogs.com/qichunlin/p/7751786.html
Copyright © 2020-2023  润新知