原本的程序是控制台的。 但最近需要移植到windows下使用。 所以以MFC来做UI,代码照搬。 一面的一处代码使用了如下语句:

boost::split(v, data, boost::is_any_of(_T("n")));

结果编译时出现了如下错误:

error C4996: 'std::_Copy_impl'

而且是无论怎么修改都不认,差点打算重写了。

在网络中搜索了半天未果,只能自己分析。好在被我乱猜给猜对了。

我猜是因为boost的string和std的string产生了冲突而导致的。 所以添加上boost的string引用后,问题得以解决。

#include <boost/algorithm/string.hpp>

在此留字,希望能帮到遇到同样问题的人。

下载游戏:《古墓丽影9》中文免安装绿色豪华硬盘版[1.1.732.1升级档][解压即玩] 光压缩包所有分卷加起来就有快10个G 结果用QQ旋风下载下来后成乱序的了 然后到网站上一看发现QQ旋风本身就把链接那些顺序没搞对。 参考下载地址:Tomb.Raider.9.v1.1.732.1.CHS.Green.Edition

自己根据使用7-zip打开压缩包的“之前分割”和“之后分割”信息拼凑了半天,结果还是有一个文件“bigfile.001.tiger”不能成功解压。最终放弃。

结果在网上搜索了半天,竟然发现“360压缩”竟然宣称自己可以修复。

原文在:http://yasuo.360.cn/update.html

1.6正式版(2011-5-26)
  1.智能压缩方式,360压缩支持智能极速、强力压缩、标准压缩等压缩方式。智能压缩根据文件智能选择压缩算法,大幅提升压缩速度。
  2.多种格式支持,支持解压rar、zip、7z、iso等39种格式的压缩文件。
  3.解压速度更快,采用多线程解压处理,优化了解压逻辑,速度更快。
  4.损坏格式兼容,对格式头有损坏的压缩包一样修复解压。
* 5.分卷压缩智能解压,智能判断解压rar分卷包时的文件夹名乱序问题。
  6.更安全的压缩软件,内含360云安全引擎,对压缩包内木马进行检测,更安全。
  7.不断完善的细节体验,支持跳转到桌面、自动消重文件夹等20多处相对传统压缩软件的细节功能改进。

抱着尝试的心态,下载了一个最新版的安装上尝试后。发现真的正常解压了所有压缩包。 总算是解决了目前的尴尬问题,所以在此留文提醒有遇到跟我同样问题的朋友。

成功解压版本:360zip_beta_3.1.0.1071

如果socket想使用HTTP代理,需要进行下面步骤:

  1. connect到代理服务器
  2. send(Format(“CONNECT %s:%s HTTP/1.1rnUser-Agent: MyApp/0.1rnrn”, <真正目标IP>, <真正目标端口>)
  3. recv 数据,并且根据数据内容判断CONNECT协议是否成功(是否有返回"HTTP/1.1 200")
  4. 如果第3步成功了,那么这个socket就已经是通过HTTP代理来连接的了,剩下的该怎么发包收包都照旧了

错误1

error LNK2019: unresolved external symbol _deflateEnd@4

原因1: 未使用zlib的链接库

  • 解决:
#pragma comment(lib, "zlibstat.lib") // for static lib
#pragma comment(lib, "zdll.lib") // for dll lib

原因2:在使用静态库时即使包含了zlibstat.lib没有定义宏“ZLIB_WINAPI”

  • 解决: 在项目属性中 C/C++ -> Preprocessor -> Preprocessor Definitions 添加“ZLIB_WINAPI” 注意:这个必须在项目中添加,使用#define来添加是无效的。

错误2

error LNK2026: module unsafe for SAFESEH image

原因:两个项目SAFESEH设置不同

  • 解决: 设置项目属性: Linker -> Advanced -> [Image Has Safe Exception Handlers] = “No” 注意:这个必须在项目中添加,使用#pragma来添加是无效的。

错误3

error LNK2005: __call_reportfault already defined in LIBCMTD.lib(invarg.obj)或类似其他的error LNK2005:

原因:与libcmt库冲突了

  • 解决:
#pragma comment(linker, "/NODEFAULTLIB:libcmt.lib")

概要

有六种类型的可重用的库:

静态单线程库 (调试/发行版) 静态多线程的库 (调试/发行版) 动态链接库 (DLL)(Debug/Release) 注意每个库都有一个调试版本和发布版本。

Reusable Library            Switch    Library    Macro(s) Defined
--------------------------- --------- ---------- ----------------------
Single Threaded             /ML       LIBC       (none)
Static MultiThread          /MT       LIBCMT     _MT
Dynamic Link (DLL)          /MD       MSVCRT     _MT and _DLL
Debug Single Threaded       /MLd      LIBCD      _DEBUG
Debug Static MultiThread    /MTd      LIBCMTD    _DEBUG and _MT
Debug Dynamic Link (DLL)    /MDd      MSVCRTD    _DEBUG, _MT, and _DLL

下面的代码可以使用可重用库的头文件中以确保一致使用正确的编译器开关:

// MyReusableStaticSingleThreadReleaseLibrary.h
#if defined(_MT) || defined(_DEBUG)
    #error The /ML compiler switch is required.
#endif

// MyReusableStaticMultithreadReleaseLibrary.h
#if !defined(_MT) || defined(_DLL) || defined(_DEBUG)
    #error The /MT compiler switch is required.
#endif

// MyReusableDynamicLinkReleaseLibrary.h
#if !defined(_MT) || !defined(_DLL) || defined(_DEBUG)
    #error The /MD compiler switch is required.
#endif

// MyReusableStaticSingleThreadDebugLibrary.h
#if defined(_MT) || !defined(_DEBUG)
    #error The /MLd compiler switch is required.
#endif

// MyReusableStaticMultithreadDebugLibrary.h
#if !defined(_MT) || defined(_DLL) || !defined(_DEBUG)
    #error The /MTd compiler switch is required.
#endif

// MyReusableDynamicLinkDebugLibrary.h
#if !defined(_MT) || !defined(_DLL) || !defined(_DEBUG)
    #error The /MDd compiler switch is required.
#endif

原文:http://support.microsoft.com/kb/140584/zh-cn

在SSH连接后执行下面命令:

export LANG=en_US
export LC_ALL=en_US

不过上面的修改只是临时的,仅这一次连接有效。等到下次再连接的时候,又得重新调用。所以可以采用下面永久解决这个问题:

echo 'LANG="en_US.UTF-8"  
LANGUAGE="en_US:en"' > /etc/default/locale

通过终端(terminal)命令安装

sudo add-apt-repository ppa:webupd8team/sublime-text-2
sudo apt-get update
sudo apt-get install sublime-text

通过解压官网安装包安装

  1. 将下载的tar.bz2文件解压
tar xf Sublime Text 2.0.1 x64.tar.bz2
  1. 将解压后的文件夹移动到应用程序文件夹
sudo mv Sublime Text 2 /opt/
  1. 设置terminal快速启动命令
sudo ln -s /opt/Sublime Text 2/sublime_text /usr/bin/sublime
  1. 在桌面创建快捷方式
sudo sublime /usr/share/applications/sublime.desktop
  1. 将下面的代码保存进去
[Desktop Entry]
Version=1.0
Name=Sublime Text 2
# Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
# From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
GenericName=Text Editor
Exec=sublime
Terminal=false
Icon=/opt/Sublime Text 2/Icon/48x48/sublime_text.webp
Type=Application
Categories=TextEditor;IDE;Development
X-Ayatana-Desktop-Shortcuts=NewWindow

[NewWindow Shortcut Group]
Name=New Window
Exec=sublime -n
TargetEnvironment=Unity

貌似安装sublime3的时候会自动创建快速启动命令,所以如果安装的是3就不用再手动设置了

摘抄自原文:http://my.oschina.net/rc6688/blog/162043#OSC_h2_4

如何安装kernel-devel,可以参考我之前的文章:《Linux下编译驱动发现没有内核源码的解决办法》

下面是我写的一个自动脚本:

cd /usr/src/kernels
cd $(ls -d */ | head -n 1)
ln -s -f $(pwd) /lib/modules/$(uname -r)/build

至于为什么要费劲去 *cd $(ls -d / | head -n 1) 的原因是:很多系统装出来的 kernel-devel 目录名称跟 $(uname -r) 并不一致

至此这个问题修复完成。