关于动态连接库dll和静态库lib的不解

来源:百度知道 编辑:UC知道 时间:2024/06/30 05:24:51
在Windows中kernel32之类的函数都装在kernel32.dll里,用masm的inc2l编译出的lib库是怎么调用它的?
程序执行时是不是先搜索它自身的目录然后在搜索其他环境变量里的目录?(dll)
如果我有一个xx.dll并把它放在system32里,xx.dll里面有个xx函数.
void xx(int x);
我想用inc2l生成一个xx.lib来调用xx.dll里的xx函数.我应该怎么做?

lib是静态库,而dll是动态库
lib就好像是obj文件,里面是编译后的二进制代码段,何以和其他obj文件进行连接,dll是已经连接后的文件,只能被调用!
如果想让自己的程序和lib文件一起连接,那就要在连接的时候加上参数,一般是import库那块,加上目标lib就行了(不同语言的连接器可能不一样)!
程序运行是会先搜索自身目录!

对于第三个问题
用汇编的话要先
invoke LoadLibrary,加载xx.dll
然后invoke GetProcAddress获取xx函数的地址
再进行参数压栈push
最后call就行了