遇到already defined in 键盘记录.obj 错误

dclchj 2008-11-13 10:19:26
我在试写一个键盘记录程序(DLL与可执行文件分开两个工程),编译可执行文件时(只声明DLL的头文件和引用DLL的库文件)总出现错误
键盘记录Dlg.obj : error LNK2005: "unsigned int m_aaaEditID" (?m_aaaEditID@@3IA) already defined in 键盘记录.obj
键盘记录Dlg.obj : error LNK2005: "struct HWND__ * m_aaaDlgHandle" (?m_aaaDlgHandle@@3PAUHWND__@@A) already defined in 键盘记录.obj
键盘记录Dlg.obj : error LNK2005: "class CString m_aaaEditString" (?m_aaaEditString@@3VCString@@A) already defined in 键盘记录.obj
Debug/键盘记录.exe : fatal error LNK1169: one or more multiply defined symbols found
*****************************************************************************************************

我的作法是新建一个MFC AppWizard(dll)工程(选共享MFC DLL),在头文件中声明出现问题的三个变量
accept(UINT,HWND);
BOOL installhook(); //钩子安装函数
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);//挂钩函数
DLL文件编译通过。
*****************************************************************************************************

然后我又新建了一个对话框工程,在MyDlg.h中声明
#include "......\\Hook.h"
#pragma comment(lib,"......\\Hook.lib")
...全文
179 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dclchj 2008-11-14
  • 打赏
  • 举报
回复
我所有都是用默认项,CPP中包含了DLL工程中的.h和.lib两个文件。不知道是哪个头文件重复了?有什么办法可以查吗?
dclchj 2008-11-14
  • 打赏
  • 举报
回复
我明白了,谢谢LS各位!
一条晚起的虫 2008-11-14
  • 打赏
  • 举报
回复
unsigned int m_aaaEditID
m_aaaDlgHandle
//包含有着两个变量的那个头文件
//修改参照3楼的方法,用预编译,保证同一个头文件只被包含一次。
greatws 2008-11-14
  • 打赏
  • 举报
回复
键盘记录Dlg.h 和 键盘记录.h包含了同一个.h文件,且没有使用重复包含宏
ma100 2008-11-14
  • 打赏
  • 举报
回复
.h里

#ifndef _XX_H
#define _XX_H
...
#endif
一条晚起的虫 2008-11-13
  • 打赏
  • 举报
回复
头文件重复包含了吧?

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧