myseelite2 v2.0.1编译:
1、编译环境
Visualstudio 2003
ACE 5.5
wxWidgets-2.8.4
2、ACE-5.5编译
进入E:\ACE\ACE_wrappers\ace目录,新建一个config.h文件。加入一句话#include "config-win32.h",现在使用Visual Studio.NET 2003打开E:\ACE\ACE_wrappers下的ace.sln,打开解决方案后,重新生成解决方案。
在lib目录下生成了ACED.dll和ACED.lib,这是Debug版本的链接库。编译release版本之后,lib目录下生成了ACE.dll和ACE.lib.
3、wxWidgets编译
打开:wxWidgets-2.8.4\build\msw\ wx.dsw
转换:【Yes to all】
分别编译debug和release版本。
4、系统变量
【我的电脑】->【属性】->【高级】->【环境变量】->【系统变量】编辑: “Path” : 在末尾添加E:\ACE\ACE_wrappers\lib
5、VS的相关配置
【工具】->【选项】->【Projects】->【VC++目录】:
“可执行文件”目录,添加 :E:\ACE\ACE_wrappers\bin;
“包含文件”目录,添加:E:\ACE\ACE_wrappers;E:\wxWidgets\wxWidgets-2.8.4\include;E:\wxWidgets\wxWidgets-2.8.4\include\msvc;
“库文件”目录,添加:E:\ACE\ACE_wrappers\lib;E:\ACE\ACE_wrappers\ace;E:\wxWidgets\wxWidgets-2.8.4\lib\vc_lib;
“源文件”目录,添加:E:\ACE\ACE_wrappers\ace。
6、myseelite编译
6.1、capture
打开myseelite2 v2.0.1\capture\capture\ capture.sln。
该解决方案中分为两个项目:ACE_Capture和streamCaplib。首先,编译streamCaplib生成streamCaplib.lib链接库;再编译ACE_Capture成ACE_Capture.exe可执行文件。
Debug版本编译通过。
Release版本:
ACE_Captureerror LNK2001: 无法解析的外部符号 "__declspec(dllimport)public: __thiscall ACE_Cleanup::ACE_Cleanup(void)"(__imp_??0ACE_Cleanup@@QAE@XZ)
修改ACE_Capture的编译选项:
【C/C++|常规|附加包含目录】E:\ACE\ACE_wrappers\include
【链接器|常规|附加库目录】E:\ACE\ACE_wrappers\lib
【链接器|输入|附加依赖项】:ACE.lib
编译成功,分别生成debug和release版本。
6.2 client
打开:myseelite2 v2.0.1\client\mediaplayer\ mediaplayer.sln.
Client解决方案中包含mediaplayer和layer1两个项目,其中编译layer1生成layer1.dll动态链接库;编译mediaplayer生成playerd.exe可执行文件。
Debug版本编译成功。
编译release版本:
mediaplayererror LNK2001: 无法解析的外部符号 "public: void __thiscallwxStringData::Free(void)" (?Free@wxStringData@@QAEXXZ)
mediaplayererror LNK2005: __errno 已经在LIBCMT.lib(dosmap.obj) 中定义
Layer1error LNK2019: 无法解析的外部符号 _EnumProcesses@12 ,该符号在函数 "unsigned long __cdeclNPLayer1::FindProcess(char *)" (?FindProcess@NPLayer1@@YAKPAD@Z) 中被引用
Layer1调试:
发现layer1的release版本和debug版本配置不一致。在【Layer1 属性页| 链接器 | 输入| 附加依赖项】中,release版本比debug版本少了一个lib。两个版本的完整附加依赖项应为:
winmm.lib
Ws2_32.lib
Wininet.lib
Psapi.lib
Mediaplayser调试:
先比较debug和release的配置:
Debug的附加依赖项:
wxmsw28d_media.lib
wxmsw28d_core.lib
wxbase28d.lib
wxbase28d_net.lib
wxbase28d_xml.lib
wxexpatd.lib
winmm.lib
comctl32.lib
rpcrt4.lib
wsock32.lib
odbc32.lib
release的附加依赖项:
wxmsw28_media.lib
wxmsw28_core.lib
wxbase28.lib
wxbase28_net.lib
wxbase28_xml.lib
wxexpat.lib
winmm.lib
comctl32.lib
rpcrt4.lib
wsock32.lib
在release版本中添加wsock32.lib后,编译成功。
注意:layer1的【运行时库】从[/MT]改为[/MD],可编译通过;
但是mediaplayer的【运行时库】从[/MD]改为[/MT],出现了连接错误:
mediaplayererror LNK2001: 无法解析的外部符号 "public: void __thiscallwxStringData::Free(void)" (?Free@wxStringData@@QAEXXZ)
mediaplayererror LNK2005: __errno 已经在LIBCMT.lib(dosmap.obj) 中定义
mediaplayererror LNK2019: 无法解析的外部符号 "public: void __thiscallwxStringData::Free(void)" (?Free@wxStringData@@QAEXXZ) ,该符号在函数 "public: void __thiscallwxStringData::Unlock(void)" (?Unlock@wxStringData@@QAEXXZ) 中被引用
所以,最后编译成功的release配置分别如下:
【Layer1属性页|常规|字符集】使用多字节字符集
【Layer1属性页|C/C++|代码生成|运行时库】多线程DLL (/MD)
【mediaplayer属性页|常规|字符集】未设置;
【Layer1属性页|C/C++|代码生成|运行时库】多线程DLL (/MD)
疑问:两个项目的“字符集”不同,这是否会产生意外的影响呢?
Client编译成功。
6.3 server
打开:myseelite2 v2.0.1\server\ server.sln
Debug成功。
Release错误提示:
e:\myseelite\myseelite2v2.0.1\server\superpeer\spclient\SPTCPClient.cpp(402):fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾
E:\ACE\ACE_wrappers\ace\config-win32-msvc.h(87):fatal error C1189: #error : You mustlink against multi-threaded libraries when using ACE (check your projectsettings)
ACE_Tracker:
【运行时库】:多线程(/MT)
【链接器 | 输入| 附加依赖项】:ACE.lib
编译成功!
sqliteLib:
【运行时库】:多线程(/MT)
编译成功!
Superpeer:
以上的配置选项,debug和release都一致!
生成项目的时候,错误提示:
e:\myseelite\myseelite2v2.0.1\server\superpeer\spclient\SPTCPClient.cpp(402):fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾
在源文件SPTCPClient.cpp中修改:
#include"../stdafx.h"改成:
#include"stdafx.h"
在md5.cpp中添加:#include "stdafx.h"
编译成功!
7、参考文献:
http://blog.csdn.net/chunxiaopengshan/article/details/2220652
http://blog.csdn.net/wzq9706/article/details/7304274
http://blog.3snews.net/space.php?uid=57253&do=blog&id=61832
fatal error C1010: 在查找预编译头指令时遇到意外的文件结尾的解决办法:
http://blog.csdn.net/sky1415/article/details/4493082
8、软件下载
Myseelite3个版:http://download.csdn.net/detail/sweet_life/4516139
ACE 5.5:http://download.csdn.net/detail/sweet_life/4516145
wxWidgets-2.8.4:http://sourceforge.net/projects/wxwindows/files/wxAll/2.8.4/
Visualstudio 2003 7 iso版本(迅雷下载):
ed2k://|file|[Visual.Studio.Net.2003.%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E4%BC%81%E4%B8%9A%E7%89%88].sc_vs.net_2003_library_cd3.[DownCD.com].iso|629245952|1C5BFB07EB7EA2B1A946A889343642DD|h=UHRSEITL3Z2CVHS6VG5DIXSXH2W3JRGO|/
ed2k://|file|[Visual.Studio.Net.2003.%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E4%BC%81%E4%B8%9A%E7%89%88].sc_vs.net_2003_library_cd2.[DownCD.com].iso|670171136|FA0D4E63E2DD1111DC8FE57D031D0BC9|h=QNFMW5CRUYUUHHU7ECXTHP4YLYJGJAQZ|/
ed2k://|file|[Visual.Studio.Net.2003.%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E4%BC%81%E4%B8%9A%E7%89%88].sc_vs.net_2003_library_cd1.[DownCD.com].iso|673560576|213F77392CA092DC2D42769191137539|h=Q76RCJJ5O3U46FI6VU2HXDHOO4W2ENVZ|/
ed2k://|file|[Visual.Studio.Net.2003.%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E4%BC%81%E4%B8%9A%E7%89%88].sc_vs.net_2003_enar_cd1.[DownCD.com].iso|655755264|DE8FCEACCBCEC72BD2037C56FB7B4A89|h=RKXIYC4PAGBQ34DXCFP4V2ICJONKSPES|/
ed2k://|file|[Visual.Studio.Net.2003.%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E4%BC%81%E4%B8%9A%E7%89%88].sc_visio_enar_2003.[DownCD.com].iso|208840704|CF20F61AD022CBE8481A593D3BBE3108|h=WPSIFE3QAEGKGJKLRWTCJL4DJBHL6W6B|/
ed2k://|file|[Visual.Studio.Net.2003.%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E4%BC%81%E4%B8%9A%E7%89%88].sc_vs.net_2003_prereq.[DownCD.com].iso|173432832|3636876F1ACE339E77E9484C2BA9267E|h=AIOYROFMHJWGZQMWPGLYAF4TSBXAGKDY|/
ed2k://|file|[Visual.Studio.Net.2003.%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E4%BC%81%E4%B8%9A%E7%89%88].sc_vs.net_2003_enar_cd2.[DownCD.com].iso|526010368|6354E8317AE1128FB54CD3682CEF2EE9|h=74GEWZRAND5BK6ORK64YG6QEFJX2C4IE|/