问题1
右击工程,选择 "Properties - Configuration Properties - General - Use of MFC"后,可以看到三个选项,
分别是
"Use Standard Windows Libraries",
"Use MFC in a Static Library",
"Use MFC in a Shared DLL"。
第一个选项中,意思应该是不用MFC类,就是说,如果你选择这项,而且的你的代码中存在MFC类的话,编译应该是不通过的。
第二个选项中,是指静态链接。编译后的程序直接包含了调用MFC的库,这样文件会大一些,但是可以直接转移到其他电脑上运
行。它发布时程序不用带MFC的dll。
第三个选项中,是指动态链接。编译后的程序不包含MFC库,所以文件比较小,但是如果把程序直接转移到一个没安装MFC的电脑
上,可能会因为找不到MFC的dll而编译不通过。它发布时需要带MFC的dll。
如果选择use MFC in a Shared DLL 的话,你编译后的程序中不包含MFC库,
所以文件会比较小,但是如果你的程序直接移到一个没有安装过MFC的机器上时,可能会导致找不到MFC的DLL。
如果选择Use MFC in a Static Library ,那你编译后的程序就直接包含了调用MFC的部分的库,文件可能会大一些,
但是可以直接移到其他机器上运行。
前者是静态链接,发布不用带MFC的DLL文件。
后者是动态连接,发布要带MFC得DLL文件。
如果可执行文件只有一个,使用后者,执行速度快,但文件比较大。
如果可执行文件多个,使用前者,因为DLL文件是共享的,所以文件体积总量减少。
单个文件也小。加载执行块,但运行速度略比前者慢。
used in a static library:
使用lib文件。lib是已经编译好的二进制文件,可以与你的工程静态链接起来成为一个exe。
used in a shared dll:
使用dll文件,函数实现隐藏在DLL文件内部,你的工程编译成exe文件后,运行时才调用dll
问题2
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <windows.h>
short g_loglevel;
int _tmain(int argc, _TCHAR* argv[])
{
LPDWORD dwPID;
GetWindowThreadProcessId(NULL, dwPID);
FindWindow(NULL, "大智慧");
cout<<"hello,world"<<endl;
return 0;
}
/*
1>------ Rebuild All started: Project: aa, Configuration: Debug Win32 ------
1> stdafx.cpp
1> aa.cpp
1>d:\0603\aa\aa\aa\aa.cpp(17): error C2664: 'FindWindowW' : cannot convert parameter 2 from 'const char [7]' to
'LPCWSTR'
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style
cast
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
*/
/*
VS2005开发程序时,默认的字符集是Unicode。所以如果程序中使用字符常量一定要显示转换为Unicode型,否则编译时报错。
如果你不希望程序支持Unicode字符集,更改项目设置就可以了。
project->properties->configurations Properties -> General ->Project Defaults -> Charater Set中将Unicode字符集改
为未设置即可。
*/
文章评论(0条评论)
登录后参与讨论