zoukankan      html  css  js  c++  java
  • DLL编程经验(1)DLL库名称编辑

    最近在做dll封装,摸着石头过河,过程中一些问题解决经验做个小结。

    DLL工程: MyDllTest

    一、DEBUG和RELEASE版本生成DLL区分

    工程编译时,会有两种选择,DEBUG和RELEASE版本,一般提供dll库也对应有两种,有两种办法可以实现:

    1.1我们可以为生成的库文件定义不同的名字以区分:

        debug版 release 版  
    dll文件 "连接器中">“常规”>“输出文件” ../bin/dbg/MyDllTest_d.dll ../bin/rls/MyDllTest.dll  
    lib文件 "连接器中">“高级”>“导入库” ../lib/dbg/MyDllTest_d.lib ../lib/rls/MyDllTest.lib  
    .def文件 工程目录:MyDllTest.def文件
    LIBRARY "MyDllTest_d"
    LIBRARY "MyDllTest"  

     

    这里特别注意,只改变.dll,.lib的文件是没用的,调用dll时,程序始终报错。一定要保持.def文件中LIBRARY定义和.dll名称一样, .def文件就是定义.dll的。

    (1) .lib 只是动态库的导引文件,起名字可以与.dll不一致,但理解方便考虑,一般和.dll名称保持一致;

    (2).def文件定义动态链接库,名称一定要和输出的 .dll一致。

    (3) .lib中关于DLL库引用按照 .def中定义DLL库名称记录,所以如果.dll名称和.def名称不一致,程序加载.lib文件后,仍然找不到对应的.dll文件。

    ===MyDllTest.def====

    ; MyDllTest.def: 声明 DLL 的模块参数。
    
    LIBRARY      "MyDllTest"
    
    EXPORTS
        ; 此处可以是显式导出
    

    =============== 

     1.2 DLL库文件名称相同,输出路径不同即可

         还有一种办法,不改变动态链接库的名称,.def文件动态库定义,只是将debug和release版本的路径设置不一样即可。

        debug版 release 版  
    dll文件 "连接器中">“常规”>“输出文件” ../bin/dbg/MyDllTest.dll ../bin/rls/MyDllTest.dll  
    lib文件 "连接器中">“高级”>“导入库” ../lib/dbg/MyDllTest.lib ../lib/rls/MyDllTest.lib  
    .def文件 工程目录:MyDllTest.def文件
    LIBRARY "MyDllTest"
    LIBRARY "MyDllTest"  
  • 相关阅读:
    C#语句2——循环语句(for循环与for循环嵌套)
    C#语言基础
    C#几种截取字符串的方法小结
    SQL提取数据库表名,字段名等信息
    Winform绑定图片的三种方式
    C#中遍历各类数据集合的方法总结
    c#winform图片绘制与图片验证码
    DataGridView根据条件给单元格绑定图片
    C#Winform 父窗体 子窗体 传值
    一条Sql语句分组排序并且限制显示的数据条数
  • 原文地址:https://www.cnblogs.com/vranger/p/3127703.html
Copyright © 2011-2022 走看看