|
发表于 2020-4-20 23:00:01
|
显示全部楼层
对静态联接时,只要.lib,无dll
运行时也不存在.lib和.dll
对动态联接时有两种方式
1.编绎时要.lib和对应包含函数声明的头文件;运行时不用.lib,而要用.dll
2.如果在程序中按寻址方式使用dll,要求在dll创建时,应在.def文件中声明函数名.这样就不需要.lib和.h文件
寻址方式示例
LONG lResult;
HINSTANCE hModule;
//建立一个新函数指针数据类型
typedef LONG (MULTIPLY2LONGSPROC)(LONG, LONG);
MULTIPLY2LONGSPROC* pfuncMultiply2Longs = 0;
// 导入文件DYNLINK1.DLL,文件应同EXE文件在同一目录或在WINDOWS\SYSTEM\目录中
VERIFY(hModule = ::LoadLibrary("DYNLINK1.dll"));
//得到DLL中函数Multiply2Longs()的地址
VERIFY(
pfuncMultiply2Longs =
(MULTIPLY2LONGSPROC*)::GetProcAddress(
(HMODULE) hModule, "Multiply2Longs")
); |
|