#include <ace/Get_Opt.h>
#include <string>
#include <iostream>
using namespace std;
void usage()
{
cout << " 参数错误 " << endl;
cout << " -h : 服务器IP" << endl;
cout << " -p : 服务器端口" << endl;
cout << " -d : 以调试模式运行" << endl;
}
int main(int argc, char *argv[])
{
if (argc < 2)
{
usage();
return 1;
}
ACE_Get_Opt cmdline (argc, argv, "h:p:d");
int cnt = 0;//必备参数计数器
string host = "";
int port = 0;
bool debug = false;
int cmd = 0;
while ((cmd = cmdline()) != -1)
{
switch (cmd)
{
case 'h':
{
host = cmdline.opt_arg();
cout << "host : " << host << endl;
++cnt;
break;
}
case 'p':
{
port = ACE_OS::atoi(cmdline.opt_arg());
cout << "port : " << port << endl;
++cnt;
break;
}
case 'd':
{
debug = true;
cout << "debug mode" << endl;
break;
}
default :
{
usage();
return 1;
}
}
}
if (cnt < 2)
{
usage();
return 1;
}
return 0;//a.exec();
};
VS2010 ACE环境配置:
/.vcxproj文件中替换以下即可,qt4.8.4
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<PreprocessorDefinitions>UNICODE;WIN32;QT_LARGEFILE_SUPPORT;QT_DLL;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<Optimization>Disabled</Optimization>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<AdditionalIncludeDirectories>.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;%(AdditionalIncludeDirectories);$(ACE6_DIR)</AdditionalIncludeDirectories>
<TreatWChar_tAsBuiltInType>false</TreatWChar_tAsBuiltInType>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<OutputFile>$(OutDir)\$(ProjectName).exe</OutputFile>
<AdditionalLibraryDirectories>$(QTDIR)\lib;%(AdditionalLibraryDirectories);$(ACE6_DIR)\lib</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>qtmaind.lib;QtCored4.lib;%(AdditionalDependencies);ACE6d.lib</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>