首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

windows核心编程 22-LastMsgBoxInfo 加载DLL有关问题

2012-05-01 
windows核心编程 22-LastMsgBoxInfo 加载DLL问题求救大牛们今天一个晚上调试就是找不到问题。。。。。调试错误

windows核心编程 22-LastMsgBoxInfo 加载DLL问题
求救大牛们今天一个晚上调试就是找不到问题。。。。。
调试错误如下 就是不能调用DLL悲剧呀 我是编译环境是vs2010弄了半天也不行就是找不到导出的函数。。。。
囧rz 囧rz 囧rz 囧r z囧rz 囧rz 囧rz 囧rz 囧rz


1>------ 已启动全部重新生成: 项目: 22-LastMsgBoxInfoLib, 配置: Debug Win32 ------
1>生成启动时间为 2011/12/20 22:28:26。
1>_PrepareForClean:
1> 正在删除文件“Debug\22-LastMsgBoxInfoLib.lastbuildstate”。
1>InitializeBuildStatus:
1> 正在创建“Debug\22-LastMsgBoxInfoLib.unsuccessfulbuild”,因为已指定“AlwaysCreate”。
1>ClCompile:
1> LastMsgBoxInfoLib.cpp
1> APIHook.cpp
1> 正在生成代码...
1>Link:
1> 正在创建库 F:\zhuomian\window核心编程\22-LastMsgBoxInfo\Debug\22-LastMsgBoxInfoLib.lib 和对象 F:\zhuomian\window核心编程\22-LastMsgBoxInfo\Debug\22-LastMsgBoxInfoLib.exp
1>Manifest:
1> 正在删除文件“Debug\22-LastMsgBoxInfoLib.dll.embed.manifest”。
1>LinkEmbedManifest:
1> 22-LastMsgBoxInfoLib.vcxproj -> F:\zhuomian\window核心编程\22-LastMsgBoxInfo\Debug\22-LastMsgBoxInfoLib.dll
1>FinalizeBuildStatus:
1> 正在删除文件“Debug\22-LastMsgBoxInfoLib.unsuccessfulbuild”。
1> 正在对“Debug\22-LastMsgBoxInfoLib.lastbuildstate”执行 Touch 任务。
1>
1>生成成功。
1>
1>已用时间 00:00:04.16
2>------ 已启动全部重新生成: 项目: 22-LastMsgBoxInfo, 配置: Debug Win32 ------
2>生成启动时间为 2011/12/20 22:28:31。
2>_PrepareForClean:
2> 正在删除文件“Debug\22-LastMsgBoxInfo.lastbuildstate”。
2>InitializeBuildStatus:
2> 正在对“Debug\22-LastMsgBoxInfo.unsuccessfulbuild”执行 Touch 任务。
2>ClCompile:
2> LastMsgBoxInfo.cpp
2>LastMsgBoxInfo.obj : error LNK2019: 无法解析的外部符号 __imp__LastMsgBoxInfo_HookAllApps@8,该符号在函数 _wWinMain@16 中被引用
2>F:\zhuomian\window核心编程\22-LastMsgBoxInfo\Debug\22-LastMsgBoxInfo.exe : fatal error LNK1120: 1 个无法解析的外部命令
2>
2>生成失败。
2>
2>已用时间 00:00:02.58
========== 全部重新生成: 成功 1 个,失败 1 个,跳过 0 个 ==========


[解决办法]
有两种Dll中函数导出声明方式。
1:
/*def文件方式*/
LIBRARY"dll"

EXPORTS
? DllMain PRIVATE
Set PRIVATE
2:
/*__declspec(dllexport)*///静态链接最好用这种方法
extern "C" __declspec(dllexport) void WINAPI Set(HANDLE handle)

它们的符号定义的不一样,
如果静态链接dll,lib中定义有符号,最好用第二种导出的声明,可以保持符号的正确,就不会出现找不到符号的错误了。

热点排行