当我要为(SDLSimple DirectMediaLayer)
设置开发环境时,我从readme.txt
文件下载了网站提供的软件包,我发现我需要.lib
和{ {1}} ...
我的问题是:
.dll
.lib
就像windows
.a
一样,是静态库,linux
的{{1}}与.dll
的{{1}}类似,共享库,这是正确的吗? windows
或.so
,因为他们所做的工作是一样的吗?那么为什么还要在一个程序中同时获得两个 ?linux
,如果我的内存服务器是正确的,那么.lib
的优点之一是它们可以在问题运行时更新,那么人们如何做到这一点,如果我们更新.dll
文件,正在运行的程序怎样才能了解.dll
的更改并将其重新加载到内存中?答案 0 :(得分:3)
在VC中,有两种库。
第一种类型是“真正的库”,由“静态库项目”生成,其中包含您可以链接和运行的所有内容,没有dll。
第二种类型是“导入库”,由“dll项目”生成,它只包含link.exe所需的符号。您可以链接到库,但需要运行dll。
使用dll有两种方法。链接到“导入库”或“使用LoadLibrary API”。
加载dll时无法更改dll文件。
但是如果使用LoadLibrary加载dll,可以使用FreeLibrary卸载dll,更改dll,然后使用LoadLibrary加载新的dll。当然,您需要监视某些内容以调用此过程。
更简单的方法是,使用加载程序进行更新,然后加载真正的exe。