如何在win32工程下使用MFC类

jian 2003-04-24 04:58:16
如CTypedPtrList,CMutex,CSingleLock

拜谢,我很急
...全文
345 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwonzor 2003-04-26
  • 打赏
  • 举报
回复
gz
jian 2003-04-26
  • 打赏
  • 举报
回复

谢谢上面各位友情跟贴。
问题已经解决。要点:1、加入相关的头文件,尤其是afx.h
2、确保MFC库在CRT库之前被link,可参考微软的文章ID:KB148652
查看afx.h文件中库如何链接的部分,选择合理的preprocessor
definitions
3、多问问题,集思广益

to:webber84(***闭关修炼中***)
我在写一个directshow filter ,是Win32 DLL类型的
to:o_racle(璐璐) ( )
既然是link error,首先想到的不该是头文件没有include吧 :)

kingzai 2003-04-26
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/1710/1710297.xml?temp=.5333368
o_racle 2003-04-26
  • 打赏
  • 举报
回复
#include <afxTempl.h>
webber84 2003-04-26
  • 打赏
  • 举报
回复
你在做DLL工程?
jian 2003-04-26
  • 打赏
  • 举报
回复
up
jian 2003-04-25
  • 打赏
  • 举报
回复
仔细研究 <afx.h>,发现应该加入mfc42ud.lib ,mfc42sud.lib ,现在已经下降为2errors,1
warning

Deleting intermediate files and output files for project 'PushSource - Win32 Debug Unicode'.
--------------------Configuration: PushSource - Win32 Debug Unicode--------------------
Compiling...
DataAdmin.cpp
FilePack.cpp
PushSourceBitmapSet.cpp
setup.cpp
Linking...
mfcs42ud.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in setup.obj
mfcs42ud.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in setup.obj; second definition ignored
Creating library Debug_Unicode/PushBmpSet.lib and object Debug_Unicode/PushBmpSet.exp
Debug_Unicode/PushBmpSet.ax : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.

PushBmpSet.ax - 2 error(s), 1 warning(s)
jian 2003-04-25
  • 打赏
  • 举报
回复
我就是因为不知道应该包含哪个库才来问的啊!!!
Kevin_C_K 2003-04-25
  • 打赏
  • 举报
回复
unresolved external symbol
这个错误明显是文件没包含进来,建议你查查,例如:CPtrList::GetNext在那个文件定义的,加进去,而且前面缺少cobject的定义
fly_bird 2003-04-25
  • 打赏
  • 举报
回复
gz
jian 2003-04-25
  • 打赏
  • 举报
回复
先#include <afx.h>
#include <afxwin.h>


再选择rebuild all,输出窗口如下:
Deleting intermediate files and output files for project 'PushSource - Win32 Debug Unicode'.
--------------------Configuration: PushSource - Win32 Debug Unicode--------------------
Compiling...
DataAdmin.cpp
FilePack.cpp
PushSourceBitmapSet.cpp
setup.cpp
Linking...
Creating library Debug_Unicode/PushBmpSet.lib and object Debug_Unicode/PushBmpSet.exp
DataAdmin.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE
PushSourceBitmapSet.obj : error LNK2001: unresolved external symbol __afxForceEXCLUDE
DataAdmin.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL
PushSourceBitmapSet.obj : error LNK2001: unresolved external symbol __afxForceUSRDLL
DataAdmin.obj : error LNK2001: unresolved external symbol "public: static void __stdcall CObject::operator delete(void *)" (??3CObject@@SGXPAX@Z)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: __thiscall CMutex::CMutex(int,unsigned short const *,struct _SECURITY_ATTRIBUTES *)" (??0CMutex@@QAE@HPBGPAU_SECURITY_ATTRIBUTES@@@Z)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: static void * __stdcall CObject::operator new(unsigned int)" (??2CObject@@SGPAXI@Z)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall CPtrList::~CPtrList(void)" (??1CPtrList@@UAE@XZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: void __thiscall CPtrList::RemoveAll(void)" (?RemoveAll@CPtrList@@QAEXXZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: struct __POSITION * __thiscall CPtrList::GetHeadPosition(void)const " (?GetHeadPosition@CPtrList@@QBEPAU__POSITION@@XZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: __thiscall CSingleLock::~CSingleLock(void)" (??1CSingleLock@@QAE@XZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: int __thiscall CSingleLock::Unlock(void)" (?Unlock@CSingleLock@@QAEHXZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: int __thiscall CPtrList::IsEmpty(void)const " (?IsEmpty@CPtrList@@QBEHXZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: int __thiscall CSingleLock::IsLocked(void)" (?IsLocked@CSingleLock@@QAEHXZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: int __thiscall CSingleLock::Lock(unsigned long)" (?Lock@CSingleLock@@QAEHK@Z)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: __thiscall CSingleLock::CSingleLock(class CSyncObject *,int)" (??0CSingleLock@@QAE@PAVCSyncObject@@H@Z)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: int __thiscall CPtrList::GetCount(void)const " (?GetCount@CPtrList@@QBEHXZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall CPtrList::Dump(class CDumpContext &)const " (?Dump@CPtrList@@UBEXAAVCDumpContext@@@Z)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall CPtrList::AssertValid(void)const " (?AssertValid@CPtrList@@UBEXXZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: virtual void __thiscall CObject::Serialize(class CArchive &)" (?Serialize@CObject@@UAEXAAVCArchive@@@Z)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: virtual struct CRuntimeClass * __thiscall CPtrList::GetRuntimeClass(void)const " (?GetRuntimeClass@CPtrList@@UBEPAUCRuntimeClass@@XZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: struct __POSITION * __thiscall CPtrList::AddTail(void *)" (?AddTail@CPtrList@@QAEPAU__POSITION@@PAX@Z)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: void * & __thiscall CPtrList::GetHead(void)" (?GetHead@CPtrList@@QAEAAPAXXZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: void * __thiscall CPtrList::RemoveHead(void)" (?RemoveHead@CPtrList@@QAEPAXXZ)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: void * & __thiscall CPtrList::GetNext(struct __POSITION * &)" (?GetNext@CPtrList@@QAEAAPAXAAPAU__POSITION@@@Z)
DataAdmin.obj : error LNK2001: unresolved external symbol "public: __thiscall CPtrList::CPtrList(int)" (??0CPtrList@@QAE@H@Z)
PushSourceBitmapSet.obj : error LNK2001: unresolved external symbol "int __stdcall AfxAssertFailedLine(char const *,int)" (?AfxAssertFailedLine@@YGHPBDH@Z)
Debug_Unicode/PushBmpSet.ax : fatal error LNK1120: 25 unresolved externals
Error executing link.exe.

PushBmpSet.ax - 28 error(s), 0 warning(s)
按照常理是缺少库文件,我应该加上什么库才好呢?
In355Hz 2003-04-24
  • 打赏
  • 举报
回复
进入 Project-->Setting--> C/C++ Page --> Preprocessor definitions 加入 _AFXDLL 并
修改 Project Options,将 /MT 或者 /ML 改为 /MD

#include <afx.h>
#include <afxwin.h> // MFC core and standard components

extern "C" int WINAPI
_tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPTSTR lpCmdLine, int nCmdShow)
{
int nRetCode = 0;

if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))
{
TRACE0("Fatal Error: MFC initialization failed.\n");
nRetCode = 1;
}
else
{
// Actual WinMain codes ...

AfxWinTerm();
}

return nRetCode;
}

jian 2003-04-24
  • 打赏
  • 举报
回复
我想试试:
(1)把前面的MFC的类库中CTypedPtrList修改为标准C++库的对应的类,但不知道对应的类是什么。此外不知道此法可行否?
(2)不知道除了MFC,同步线程应该使用什么类或者API函数
KcSoft 2003-04-24
  • 打赏
  • 举报
回复
H:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxv_w32.h(14) :
fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>

上面说明Win32 App不能调用MFC。
如果确实要用MFC的函数,看来只能写DLL调用。
jian 2003-04-24
  • 打赏
  • 举报
回复
已经加上该类的头文件,主要是我选择了Ignore All Libraries,没法找到响应的库。

另外还出现这样的一个错误:
H:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE\afxv_w32.h(14) : fatal error C1189: #error : WINDOWS.H already included. MFC apps must not #include <windows.h>
laolaoliu2002 2003-04-24
  • 打赏
  • 举报
回复
加上类的头文件,需要那个在MSDN里查一下就可以知道是那个文件了。
jian 2003-04-24
  • 打赏
  • 举报
回复
我还要说明一下,我的VC下面选定了Ignore All Libraries这个选项
guoxiny 2003-04-24
  • 打赏
  • 举报
回复
把你要用的类的头文件加上:

#include <afxmt.h>
#include <afxtempl.h>

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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