想把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。。。
还请大侠指点。
出现的问题:
如果我全部用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。。。
还请大侠指点。
...全文
相关推荐
MFC和Win32下的TCP和UDP连接代码.zip
MFC下 TCP和UDP 连接代码实现和注解(四个案例) 希望大家喜欢
win32和win32 console和MFC程序概况
win32和win32 console和MFC程序概况,区别,从零开始c++,各种运行库
VS2013基于MFC连接sql server数据库以及增删改查
该文件是在VS2013下基于MFC连接数据库并完美实现增删改查,下载后只需要修改链接字就可以运行。谢谢采纳!
win32程序调用MFC对话框资源
在win32工程中调用MFC对话框Dialog!注意加载加载MFC动态dll
Win32MFC计算器
实验课实现的win32MFC计算器,可实现+、-、*、/、sqrt、%运算,同时支持数字键盘输入,仅供参考学习,欢迎批评指正



