这可能是一个非常愚蠢的问题。 但是,假设我有一个DLL(test.dll),带有一些导出,在构build时会生成一个导入库(test.lib)。 我有一个使用此DLL的应用程序TestApp。
现在,如果我想在DLL中更改某些函数的实现,并且保持导出不变,那么是否需要重新生成使用此DLL / import lib的应用程序?
谢谢。
问题使用pantheios文件股票后端
设置DLL使用超时
find一个句柄开放的地方
C ++静态库中的共享全局variables:Linux
在Ubuntu上导入python的dll
OpenCV预编译的二进制文件没有安装DLL
多次链接DLL时,导出的全局variables会发生什么变化?
错误:应用程序无法正确启动
在linux下读取/写入Python中的LabView TDMS文件
一个进程可以加载两个完全相同名字的DLL吗?
不,你不需要重建DLL。
考虑一下你的应用程序在Windows XP上运行,有一天Windows 7将会运行。 即使像user32.dll,kernel32.dll这样的系统DLL被更新,同样的应用程序仍然可以继续工作而不需要重建。
没有。 共享库(vs静态库)的目的之一就是这样:只要外部看不到变化(输出的定义/功能),使用它的应用就不需要重新编译。
如果这些函数是C函数,并且不更改正在传递的任何结构的定义,则不需要重新构建该应用程序。
如果DLL导出C ++类,那么导入模块确实需要重建 – 即使方法签名没有改变,C ++类的导出也是泄漏的:当为类分配空间时,没有定义的分配器函数被导出(由默认),因此在调用(Exported)构造函数之前,导入模块必须猜测分配了多少空间。 它通过解析类定义来建立这种猜测。
这个不幸的后果是,即使你只是小心地改变一个类的实现细节 – 即使方法签名将保持不变,并且DLL会成功加载,应用程序将在创建新实例时分配不正确的字节数在堆或堆栈上。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。