想把win32和MFC混用,结果有如下几个连接错误,不知道有什么方法解决?
我是在进行混合语言编程(Matlab 调用c的dll).下面就是在dll编程过程中
出现的问题:
如果我全部用WIN32来做该dll,用windows.h头文件,应该是没有问题的。有默认的命令行build.bat工具。Matlab带的。该工具对win32的程序编译没有问题。
但是我想使用CString class, 因此想以MFC为主,WIN32 API为辅,因此用
stdafx.h作用头文件,同时调用WIN32 API前用“::”符号。
简短程序如下:
DEVMODE devmode;
DWORD iMode;
BOOL bRetVal;
CString sDevMode[256];
iMode = 0;
do
{
bRetVal = ::EnumDisplaySettings(NULL, iMode, &devmode);
iMode++;
if (bRetVal)
{
sDevMode[iMode-1].Format("%d x %d, %d bits %dhz", devmode.dmPelsWidth,
devmode.dmPelsHeight, devmode.dmBitsPerPel, devmode.dmDisplayFrequency);
}
}
while (bRetVal);
AfxMessageBox("An error occurred!!!");
这样通过了编译,但是没有通过link.可能原因是那个命令行build.bat工具是针对WIN32API写的,没有办法对付这样MFC为主的写法。因此出现如下错误:
vdGetSupportedResList.bj user32.lib
Creating library _lib2890.x and object _lib2890.exp
nafxcw.lib(apphelp.obj) : error LNK2001: unresolved external symbol __mbctype
nafxcw.lib(filelist.obj) : error LNK2019: unresolved external symbol __mbctype referenced in function "void __stdcall _AfxAbbreviateName(char *,int,int)" (?_AfxAbbreviateName@@YGXPADHH@Z)
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argv
nafxcw.lib(appcore.obj) : error LNK2001: unresolved external symbol ___argc
vdGetSupportedResList.dll : fatal error LNK1120: 3 unresolved externals
--------------------------------------------
因此我想请教以下几点:
1。如果要在WIN32程序(比如new project wizard中新开的是个WIN32项目)中调用MFC的东东(非界面,比如CString),应该怎么设置编译呢?(主要是图个方便,好像CString挺顺手的。)
2。如果要在WIN32程序(比如new project wizard中新开的是个WIN32项目)中调用MFC的东东(界面,比如CDialog),应该怎么设置编译呢?(主要是图个方便,MFC设计界面好像挺容易。)
上面的matlab给的build.bat工具就是能针对win32程序,但是似乎需要添加点库和命令才能用MFC。。。
还请大侠指点。