在C++ builder编译器IDE软件下

1、View -Project Manageer --找到需要替换的x.dll(gts.dll)对应的x.lib(gts.lib),然后Remove
2、Project -Remove from project --查找是否dll是否任然存在,如果存在,则Remove
3、1/2两个步骤,任选其一。完成以后,编译程序可以看到类似下面的error
  [Linker Error]Unresolved external "GT_AxisOff" referenced form ...file..path...
    GT_AxisOff 是Remove掉的dll(gts.dll)里面的函数
4、删除 工程文件目录下x.dll 、x.lib、x.h x.h~   
  完成之后编译程序可以看到类似下面的error:E2209
    [C++ Error]motionCtrl_GTS.h(6):E2209 Unable to open include file 'x.h'(gts.h)   ::::::motionCtrl_GTS.h是使用到gts.h的文件
  细心的你会发现 编译出错时,项目文件\DEBUGS\下并不会有exe文件
5、删除 工程文件\DEBUGS\目录下 x.dll  、x.lib (gts.dll、gts.lib)
  完成之后编译程序可以看到和第4步一样的ErrorE2209
6、添加 新的x.dll、 x.lib  x.h 到 工程目录下
  完成之后编译程序可以看到类似下面的errorE2268:
    [c++ Error]motionCtrl_GTS.cpp(48):E2268 Call to Undefined function 'GT_SetAxisAsLaser'
      报错说明:这是因为新的gts.dll 中没有 旧版本gts.dll中函数‘GT_SetAxisAsLaser’接口,所以原本程序中使用这个函数就会报错 (这是替换dll后,进一步的更新工作)
  用心对比 第4步  和   第6步 的操作过程和编译结果
7、添加 新的x.dll 、x.lib 到 工程文件\DEBUGS\目录下
  完成之后编译程序可以看到和第6步一样的errorE2268:
  这个时候,大家注意,第 1步 或者 第2 步我们Remove 后编译报错[Linker Error] ,当我们完成 第6步 和第 7步,还没有把 (..待续..)add to project  ,也并没有报错[Linker Error]
    其实并不是不存在错误[Linker Error],而是编译流程的原因,当编译出第6步的错误时,编译器就没有深一步的编译
    假如,新的gts.dll 完全涵盖了 旧的 gts.dll ,这个时候,我们编译程序 ,便不会产生 第6步的错误, 而是产生 第1步或者 第2步完成之后编译的错误 [Linker Error]
8、Project -Add to Project  --弹出的对话框选择文件类型 ang file(*.*) 在工程文件下找到 gts.lib 点击打开
  完成之后,编译程序,会看到编译成功,没有错误
  我们打开 工程文件\DEBUGS\也可以看到 生成了项目程序的exe文件 ,双击运行 OK,没有任何问题

替换DLL的过程,完整的实现。这是我在亲自一步步操作整理的过程,希望对需要的朋友有帮助。

替换应用程序DLL动态库的详细方法步骤 (gts.dll为例)的更多相关文章

  1. 应用程序调用dll动态库,参数有vector时崩溃的问题

    引用:http://blog.csdn.net/guoliushui/article/details/43017339 今天跟同事遇到了一个问题,问题背景: 一个动态库Tst.dll: 一个应用程序A ...

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

    C/C++程序如何打成DLL动态库: **1.在VS中新建main.h,添加如下内容:** extern "C" _declspec(dllexport) int onLoad() ...

  3. C/C++/C#程序如何打成DLL动态库

    C/C++程序如何打成DLL动态库:1.在VS中新建main.h,添加如下内容:extern "C" _declspec(dllexport) int onLoad(); 2.新建 ...

  4. Delphi调用C# 编写dll动态库

    Delphi调用C# 编写dll动态库 编写C#dll的方法都一样,首先在vs2005中创建一个“类库”项目WZPayDll, using System.Runtime.InteropServices ...

  5. .NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper

    .NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper 參考演示样例代码,例如以下所看到的: /// <summary> /// MySql ...

  6. Java调用dll动态库

    最近项目里使用java调用dll动态库,因此研究了一下这方面的东西. 使用的工具包如下 <dependency> <groupId>net.java.dev.jna</g ...

  7. Eclipse下生成.dll动态库及.a静态库使用 for Windows [z]

    以后的主要工作就是做库了,将我们的C或者C++写的接口做成库,给客户端使用,因此有必要知道库的使用和制作方法.主要是在Eclipse下搞了搞,公司用的是Carbide,也差不多.库做好了,用SVN已提 ...

  8. Golang调用windows下的dll动态库中的函数

    Golang调用windows下的dll动态库中的函数 使用syscall调用. package main import ( "fmt" "syscall" & ...

  9. java使用JNA框架调用dll动态库

    这两天了解了一下java调用dll动态库的方法,总的有三种:JNI.JNA.JNative.其中JNA调用DLL是最方便的. ·JNI ·JNA ·JNative java使用 JNI来调用dll动态 ...

随机推荐

  1. BestCoder Round #34_1002 以及 hdu 5191

    枚举最终的W堆积木在哪,确定了区间,那么就需要把高于H的拿走,低于H的补上,高处的积木放到矮的上面,这样最优. 注意多出来的积木可以放在已有积木的前面或者后面,独立成一堆积木,所以需要在n堆积木的前后 ...

  2. 用openssl库RSA加密解密

    #include <stdio.h> #include <openssl/rsa.h> #include <openssl/pem.h> #include < ...

  3. Java并发编程-阻塞队列

    Java concurrent 包中BlockingQueue接口有ArrayBlockingqueue.LinkedBlockingQueue.PriorityBlockingQueue.Synch ...

  4. DB Error || Warning

    数据库在进行增删改查时有时候会发生错误,当在程序中一个操作总是不起作用的时候,我们可以尝试如下方法: 1.输出sql语句,有的sql语句可能是通过一些字符拼接完成的,这时候可能会发生'', +之类的混 ...

  5. wireshark 随笔

    在进行通信开发的过程中,我们往往会把本机既作为客户端又作为服务器端来调试代码,使得本机自己和自己通信.但是wireshark此时是无法抓取到数据包的,需要通过简单的设置才可以. 具体方法如下: ①:以 ...

  6. h5新增html标签语义

    H5新增常用标签<body> <header>...</header> <nav>...</nav> <article> < ...

  7. 《深入浅出MySQL》之SQL基础

    SQL是Structure Query language(结构化查询语言)的缩写,它是使用关系模型的数据库应用语言.在众多开源数据中,MySQL正式其中最杰出的代表,MySQL是由三个瑞典人于20世纪 ...

  8. js中面向对象的写法

    function Circle(r){ this.r = r; }//构造(实例对象的)函数[思路二:这是一个类] Circle.PI = 3.14159; //属性 Circle.prototype ...

  9. IT之光

    作为一个IT界的新新人才,现在拥有第一个博客,可以在这里学习和分享IT方面的知识和技术.

  10. 201521123010 《Java程序设计》第3周学习总结

    1. 本周学习总结 2. 书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private static int j = 2; p ...