VC++6.0编译器中怎么设置编译选项为多线程
编写了一个多线程程序,似乎是需要将编译选项设置为多线程,但是我不知道怎么设置,麻烦高手指点下。我的程序如下:#include"stdio.h"#include"Windo...
编写了一个多线程程序,似乎是需要将编译选项设置为多线程,但是我不知道怎么设置,麻烦高手指点下。
我的程序如下:
#include "stdio.h"
#include "Windows.h"
#include "string.h"
int nFirst;
int nResValue;
int nSecond;
BOOL bCreateFlag;
PROCESS_INFORMATION ProcessInfo;
void main()
{
BOOL flag;
STARTUPINFO stinfo;
int iCommand;
ZeroMemory((void*)&stinfo, sizeof(STARTUPINFO));
stinfo.cb = sizeof(STARTUPINFO);
HANDLE hPipe;
stinfo.dwFlags = STARTF_USESHOWWINDOW;
stinfo.wShowWindow = SW_SHOW;
bCreateFlag=FALSE;
printf("请选择命令(数字),1 创建服务器程序;2 输入数字; 3 终止服务器 4 退出\n");
scanf("%d",&iCommand);
while(iCommand!=4)
{
if(iCommand==1)
{
if(bCreateFlag==FALSE)
{
flag=CreateProcess(
"Debug\\PipeServer.exe",
NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL,
"Debug",
&stinfo, &ProcessInfo);
bCreateFlag = TRUE;
}
}
if(iCommand==2)
{
Sleep(1000);
if(bCreateFlag==TRUE)
{
hPipe = CreateFile("\\\\.\\Pipe\\NamedPipe", GENERIC_READ | GENERIC_WRITE, \
0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL) ;
// HANDLE hPipe = CreateFile("e:\\NamedPipe", GENERIC_READ | GENERIC_WRITE, \
// 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL) ;
if ( hPipe == INVALID_HANDLE_VALUE )
{
DWORD dwErrorCode = GetLastError () ;
printf( "打开管道失败,服务器尚未启动,或者客户端数量过多" ) ;
return ;
}
printf("please input two numbers: \nFisrt one A=");
scanf("%d",&nFirst);
printf("Second one B=");
DWORD nReadByte, nWriteByte ;
scanf("%d",&nSecond);
char szBuf[1024] = {0} ;
// 把两个整数(a,b)格式化为字符串
sprintf ( szBuf, "%d %d", nFirst, nSecond ) ;
// 把数据写入管道
WriteFile ( hPipe, szBuf, strlen(szBuf), &nWriteByte, NULL ) ;
memset ( szBuf, 0, sizeof(szBuf) ) ;
// 读取服务器的反馈信息
ReadFile ( hPipe, szBuf, 1024, &nReadByte, NULL ) ;
// 把返回信息格式化为整数
sscanf ( szBuf, "%d", &nResValue ) ;
printf("A+B=%d + %d = %d \n",nFirst,nSecond,nResValue);
}
else
{
printf("服务器进程没有启动,请先选择1 创建服务器进程\n");
}
}
if(iCommand==3)
{
CloseHandle ( hPipe ) ;
//CloseHandle()
TerminateProcess(ProcessInfo.hProcess,0);
bCreateFlag=FALSE;
}
printf("请选择命令(数字),1 创建服务器程序;2 输入数字; 3 终止服务器 4 退出\n");
scanf("%d",&iCommand);
}
CloseHandle ( hPipe ) ;
TerminateProcess(ProcessInfo.hProcess,0);
bCreateFlag=FALSE;
} 展开
我的程序如下:
#include "stdio.h"
#include "Windows.h"
#include "string.h"
int nFirst;
int nResValue;
int nSecond;
BOOL bCreateFlag;
PROCESS_INFORMATION ProcessInfo;
void main()
{
BOOL flag;
STARTUPINFO stinfo;
int iCommand;
ZeroMemory((void*)&stinfo, sizeof(STARTUPINFO));
stinfo.cb = sizeof(STARTUPINFO);
HANDLE hPipe;
stinfo.dwFlags = STARTF_USESHOWWINDOW;
stinfo.wShowWindow = SW_SHOW;
bCreateFlag=FALSE;
printf("请选择命令(数字),1 创建服务器程序;2 输入数字; 3 终止服务器 4 退出\n");
scanf("%d",&iCommand);
while(iCommand!=4)
{
if(iCommand==1)
{
if(bCreateFlag==FALSE)
{
flag=CreateProcess(
"Debug\\PipeServer.exe",
NULL, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL,
"Debug",
&stinfo, &ProcessInfo);
bCreateFlag = TRUE;
}
}
if(iCommand==2)
{
Sleep(1000);
if(bCreateFlag==TRUE)
{
hPipe = CreateFile("\\\\.\\Pipe\\NamedPipe", GENERIC_READ | GENERIC_WRITE, \
0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL) ;
// HANDLE hPipe = CreateFile("e:\\NamedPipe", GENERIC_READ | GENERIC_WRITE, \
// 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL) ;
if ( hPipe == INVALID_HANDLE_VALUE )
{
DWORD dwErrorCode = GetLastError () ;
printf( "打开管道失败,服务器尚未启动,或者客户端数量过多" ) ;
return ;
}
printf("please input two numbers: \nFisrt one A=");
scanf("%d",&nFirst);
printf("Second one B=");
DWORD nReadByte, nWriteByte ;
scanf("%d",&nSecond);
char szBuf[1024] = {0} ;
// 把两个整数(a,b)格式化为字符串
sprintf ( szBuf, "%d %d", nFirst, nSecond ) ;
// 把数据写入管道
WriteFile ( hPipe, szBuf, strlen(szBuf), &nWriteByte, NULL ) ;
memset ( szBuf, 0, sizeof(szBuf) ) ;
// 读取服务器的反馈信息
ReadFile ( hPipe, szBuf, 1024, &nReadByte, NULL ) ;
// 把返回信息格式化为整数
sscanf ( szBuf, "%d", &nResValue ) ;
printf("A+B=%d + %d = %d \n",nFirst,nSecond,nResValue);
}
else
{
printf("服务器进程没有启动,请先选择1 创建服务器进程\n");
}
}
if(iCommand==3)
{
CloseHandle ( hPipe ) ;
//CloseHandle()
TerminateProcess(ProcessInfo.hProcess,0);
bCreateFlag=FALSE;
}
printf("请选择命令(数字),1 创建服务器程序;2 输入数字; 3 终止服务器 4 退出\n");
scanf("%d",&iCommand);
}
CloseHandle ( hPipe ) ;
TerminateProcess(ProcessInfo.hProcess,0);
bCreateFlag=FALSE;
} 展开
1个回答
展开全部
/MT
「Project Settings」
选择「C/C++」页面标签,然后在「Category」下拉式清单方块中选择「Code Generation」。在「Use Run-Time Library」下拉式清单方块中,可以看到用于「Release」设定的「Single-Threaded」和用于Debug设定的「Debug Single-Threaded」。将这些分别改为「Multithreaded」和「Debug Multithreaded」。
「Project Settings」
选择「C/C++」页面标签,然后在「Category」下拉式清单方块中选择「Code Generation」。在「Use Run-Time Library」下拉式清单方块中,可以看到用于「Release」设定的「Single-Threaded」和用于Debug设定的「Debug Single-Threaded」。将这些分别改为「Multithreaded」和「Debug Multithreaded」。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询