Skip to content

Commit db7270d

Browse files
committed
fixed:windows service start failed
1 parent a805d54 commit db7270d

File tree

5 files changed

+127
-95
lines changed

5 files changed

+127
-95
lines changed

XEngine_Source/VSCopy_Debug.bat

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_BaseSafe.dll" "./"
33
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_Algorithm.dll" "./"
44
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_Core.dll" "./"
55
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_ManagePool.dll" "./"
6-
copy /y "D:\XEngine\XEngine_SourceCode\Debug\Cryption.dll" "./"
6+
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_Cryption.dll" "./"
77

88
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XClient_APIHelp.dll" "./"
99
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XClient_Stream.dll" "./"
@@ -13,6 +13,7 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\NetHelp_XSocket.dll" "./"
1313
copy /y "D:\XEngine\XEngine_SourceCode\Debug\NetHelp_APIAddr.dll" "./"
1414
copy /y "D:\XEngine\XEngine_SourceCode\Debug\NetHelp_APIHelp.dll" "./"
1515
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemApi.dll" "./"
16+
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_SystemConfig.dll" "./"
1617

1718
copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_DataBase.dll" "./"
1819
copy /y "D:\XEngine\XEngine_SourceCode\Debug\HelpComponents_XLog.dll" "./"
@@ -25,11 +26,11 @@ copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_VideoCodec.dll" "./"
2526
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_AudioCodec.dll" "./"
2627
copy /y "D:\XEngine\XEngine_SourceCode\Debug\XEngine_AVCollect.dll" "./"
2728

28-
copy /y "%XEngine_Lib32%\XEngine_AVCodec\avcodec-60.dll" "./"
29-
copy /y "%XEngine_Lib32%\XEngine_AVCodec\avdevice-60.dll" "./"
30-
copy /y "%XEngine_Lib32%\XEngine_AVCodec\avfilter-9.dll" "./"
31-
copy /y "%XEngine_Lib32%\XEngine_AVCodec\avformat-60.dll" "./"
32-
copy /y "%XEngine_Lib32%\XEngine_AVCodec\avutil-58.dll" "./"
33-
copy /y "%XEngine_Lib32%\XEngine_AVCodec\swresample-4.dll" "./"
34-
copy /y "%XEngine_Lib32%\XEngine_AVCodec\swscale-7.dll" "./"
35-
copy /y "%XEngine_Lib32%\XEngine_AVCodec\postproc-57.dll" "./"
29+
copy /y "%XEngine_Lib32%\XEngine_AVCodec\avcodec-61.dll" "./"
30+
copy /y "%XEngine_Lib32%\XEngine_AVCodec\avdevice-61.dll" "./"
31+
copy /y "%XEngine_Lib32%\XEngine_AVCodec\avfilter-10.dll" "./"
32+
copy /y "%XEngine_Lib32%\XEngine_AVCodec\avformat-61.dll" "./"
33+
copy /y "%XEngine_Lib32%\XEngine_AVCodec\avutil-59.dll" "./"
34+
copy /y "%XEngine_Lib32%\XEngine_AVCodec\swresample-5.dll" "./"
35+
copy /y "%XEngine_Lib32%\XEngine_AVCodec\swscale-8.dll" "./"
36+
copy /y "%XEngine_Lib32%\XEngine_AVCodec\postproc-58.dll" "./"

XEngine_Source/VSCopy_x86.bat

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_XSocket.dll" "./"
1313
copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_APIAddr.dll" "./"
1414
copy /y "%XEngine_Lib32%\XEngine_NetHelp\NetHelp_APIHelp.dll" "./"
1515
copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemApi.dll" "./"
16+
copy /y "%XEngine_Lib32%\XEngine_SystemSdk\XEngine_SystemConfig.dll" "./
1617

1718
copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_DataBase.dll" "./"
1819
copy /y "%XEngine_Lib32%\XEngine_HelpComponents\HelpComponents_XLog.dll" "./"

XEngine_Source/XEngine_ServiceApp/XEngine_APIServiceApp/XEngine_APIServiceApp.cpp

Lines changed: 114 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,28 @@ bool bIsRun = false;
1414
XHANDLE xhLog = NULL;
1515
XENGINE_SERVICECONFIG st_ServiceConfig = {};
1616
// 服务名称,使用 constexpr 替代宏定义
17-
constexpr LPCWSTR SERVICE_NAME = L"XEngine_APIService";
17+
constexpr LPCTSTR XENGINE_SERVICE_NAME = _T("XEngine_APIService");
18+
constexpr LPCTSTR XENGINE_SERVICE_SHOW = _T("XEngine APIService 管理服务");
19+
constexpr LPCTSTR XENGINE_SERVICE_DESCRIPTION = _T("XEngine APIService 数据查询与系统管理接口服务程序");
1820
// 全局变量
1921
SERVICE_STATUS st_ServiceStatus = { 0 };
20-
SERVICE_STATUS_HANDLE st_hServiceStatusHandle = nullptr;
22+
SERVICE_STATUS_HANDLE hServiceStatusHandle = NULL;
2123
// 函数声明
2224
void WINAPI XEngine_ServiceCtrlHandler(DWORD dwControl);
2325
void WINAPI XEngine_ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv);
2426
void XEngine_InstallService();
2527
void XEngine_UninstallService();
26-
// 主函数
27-
int wmain(int argc, wchar_t* argv[])
28+
29+
bool XEngine_InitLog()
2830
{
31+
if (NULL != xhLog)
32+
{
33+
return true;
34+
}
2935
//初始化参数
30-
if (!XEngine_Configure_Parament(argc, argv))
36+
if (!XEngine_Configure_Parament())
3137
{
32-
return -1;
38+
return false;
3339
}
3440
//初始日志
3541
HELPCOMPONENTS_XLOG_CONFIGURE st_XLogConfig = {};
@@ -40,33 +46,37 @@ int wmain(int argc, wchar_t* argv[])
4046
if (NULL == xhLog)
4147
{
4248
printf("启动服务中,启动日志失败,错误:%lX", XLog_GetLastError());
43-
return -2;
49+
return false;
4450
}
4551
//设置日志打印级别
4652
HelpComponents_XLog_SetLogPriority(xhLog, st_ServiceConfig.st_XLog.nLogType);
4753
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,初始化日志系统成功"));
48-
54+
return true;
55+
}
56+
// 主函数
57+
int _tmain(int argc, TCHAR* argv[])
58+
{
59+
XEngine_InitLog();
4960
if (argc > 1)
5061
{
51-
if (_wcsicmp(argv[1], L"install") == 0)
62+
if (0 == _tcsicmp(argv[1], L"-install"))
5263
{
5364
XEngine_InstallService();
5465
return 0;
5566
}
56-
else if (_wcsicmp(argv[1], L"uninstall") == 0)
67+
else if (0 == _tcsicmp(argv[1], L"-uninstall"))
5768
{
5869
XEngine_UninstallService();
5970
return 0;
6071
}
6172
}
62-
63-
SERVICE_TABLE_ENTRYW ServiceTable[] =
73+
74+
SERVICE_TABLE_ENTRY ServiceTable[] =
6475
{
65-
{ const_cast<LPWSTR>(SERVICE_NAME), (LPSERVICE_MAIN_FUNCTIONW)XEngine_ServiceMain },
66-
{ nullptr, nullptr }
76+
{ const_cast<LPTSTR>(XENGINE_SERVICE_NAME), (LPSERVICE_MAIN_FUNCTION)XEngine_ServiceMain },
77+
{ NULL, NULL }
6778
};
68-
69-
if (!StartServiceCtrlDispatcherW(ServiceTable))
79+
if (!StartServiceCtrlDispatcher(ServiceTable))
7080
{
7181
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动服务控制程序失败,错误:%d"), GetLastError());
7282
return -3;
@@ -77,122 +87,142 @@ int wmain(int argc, wchar_t* argv[])
7787
// 服务主函数
7888
void WINAPI XEngine_ServiceMain(DWORD dwArgc, LPTSTR* lpszArgv)
7989
{
90+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,开始处理服务程序"));
8091
// 初始化服务状态
8192
st_ServiceStatus.dwServiceType = SERVICE_WIN32_OWN_PROCESS;
8293
st_ServiceStatus.dwCurrentState = SERVICE_START_PENDING;
8394
st_ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
8495
st_ServiceStatus.dwWin32ExitCode = 0;
8596
st_ServiceStatus.dwServiceSpecificExitCode = 0;
8697
st_ServiceStatus.dwCheckPoint = 0;
87-
st_ServiceStatus.dwWaitHint = 0;
88-
98+
st_ServiceStatus.dwWaitHint = 1000;
8999
// 注册服务控制处理程序
90-
st_hServiceStatusHandle = RegisterServiceCtrlHandlerW(SERVICE_NAME, XEngine_ServiceCtrlHandler);
91-
if (NULL == st_hServiceStatusHandle)
100+
hServiceStatusHandle = RegisterServiceCtrlHandlerW(XENGINE_SERVICE_NAME, XEngine_ServiceCtrlHandler);
101+
if (NULL == hServiceStatusHandle)
92102
{
93-
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动服务控制程序失败,错误:%d"), GetLastError());
103+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,注册服务控制程序失败,错误:%d"), GetLastError());
94104
return;
95105
}
96-
106+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,注册服务控制程序成功"));
97107
// 服务启动完成
98-
st_ServiceStatus.dwCurrentState = SERVICE_RUNNING;
99-
if (!SetServiceStatus(st_hServiceStatusHandle, &st_ServiceStatus))
108+
if (!SetServiceStatus(hServiceStatusHandle, &st_ServiceStatus))
100109
{
101-
throw std::runtime_error("SetServiceStatus failed");
102-
}
103-
104-
// 服务主循环(示例)
105-
while (st_ServiceStatus.dwCurrentState == SERVICE_RUNNING)
106-
{
107-
Sleep(1000); // 模拟服务工作
108-
// 在这里添加你的服务逻辑
110+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动服务设置状态失败,错误:%d"), GetLastError());
111+
return;
109112
}
110-
try
113+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,设置服务程序状态成功"));
114+
// 服务启动完成
115+
st_ServiceStatus.dwCheckPoint = 0;
116+
st_ServiceStatus.dwWaitHint = 0;
117+
st_ServiceStatus.dwCurrentState = SERVICE_RUNNING;
118+
st_ServiceStatus.dwControlsAccepted = SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN;
119+
if (!SetServiceStatus(hServiceStatusHandle, &st_ServiceStatus))
111120
{
112-
121+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,启动服务启动状态失败,错误:%d"), GetLastError());
122+
return;
113123
}
114-
catch (const std::exception& e)
124+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("启动服务中,设置服务启动状态成功,服务运行中"));
125+
bIsRun = true;
126+
while (bIsRun)
115127
{
116-
std::wcerr << L"ServiceMain exception: " << e.what() << L"\n";
117-
st_ServiceStatus.dwCurrentState = SERVICE_STOPPED;
118-
SetServiceStatus(st_hServiceStatusHandle, &st_ServiceStatus);
128+
Sleep(1000);
119129
}
120130
}
121-
122131
// 服务控制处理函数
123132
void WINAPI XEngine_ServiceCtrlHandler(DWORD dwControl)
124133
{
125134
switch (dwControl)
126135
{
136+
case SERVICE_CONTROL_PAUSE:
137+
break;
138+
case SERVICE_CONTROL_CONTINUE:
139+
st_ServiceStatus.dwCurrentState = SERVICE_RUNNING;
140+
SetServiceStatus(hServiceStatusHandle, &st_ServiceStatus);
141+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,收到命令,继续执行"));
142+
break;
127143
case SERVICE_CONTROL_STOP:
144+
bIsRun = false;
145+
st_ServiceStatus.dwCurrentState = SERVICE_STOPPED;
146+
SetServiceStatus(hServiceStatusHandle, &st_ServiceStatus);
147+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,收到命令,停止运行"));
148+
break;
128149
case SERVICE_CONTROL_SHUTDOWN:
150+
bIsRun = false;
129151
st_ServiceStatus.dwCurrentState = SERVICE_STOPPED;
130-
SetServiceStatus(st_hServiceStatusHandle, &st_ServiceStatus);
152+
SetServiceStatus(hServiceStatusHandle, &st_ServiceStatus);
153+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,收到命令,关闭程序"));
131154
break;
132155
default:
156+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,收到无法处理的命令:%d"), dwControl);
133157
break;
134158
}
135159
}
136-
137160
// 安装服务
138161
void XEngine_InstallService()
139162
{
140-
try
163+
TCHAR tszFilePath[MAX_PATH] = {};
164+
if (!GetModuleFileName(NULL, tszFilePath, MAX_PATH))
141165
{
142-
wchar_t szPath[MAX_PATH];
143-
if (!GetModuleFileNameW(nullptr, szPath, MAX_PATH))
144-
{
145-
throw std::runtime_error("GetModuleFileName failed");
146-
}
147-
148-
auto hSCManager = std::unique_ptr<std::remove_pointer_t<SC_HANDLE>, decltype(&CloseServiceHandle)>(
149-
OpenSCManagerW(nullptr, nullptr, SC_MANAGER_CREATE_SERVICE),
150-
CloseServiceHandle
151-
);
152-
if (!hSCManager)
153-
{
154-
throw std::runtime_error("OpenSCManager failed");
155-
}
166+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,安装服务失败,获取文件路径失败,错误码:%d"), GetLastError());
167+
return;
168+
}
169+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,安装服务中,获取本地路径成功:%s"), tszFilePath);
156170

157-
auto hService = std::unique_ptr<std::remove_pointer_t<SC_HANDLE>, decltype(&CloseServiceHandle)>(CreateServiceW(hSCManager.get(), SERVICE_NAME, L"My Modern Service",SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL,szPath, nullptr, nullptr, nullptr, nullptr, nullptr),CloseServiceHandle
158-
);
159-
if (!hService)
160-
{
161-
throw std::runtime_error("CreateService failed");
162-
}
171+
SC_HANDLE hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_CREATE_SERVICE);
172+
if (NULL == hSCManager)
173+
{
174+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,安装服务失败,打开权限错误,错误码:%d"), GetLastError());
175+
return;
176+
}
177+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,安装服务中,打开服务成功"));
163178

164-
std::wcout << L"Service installed successfully\n";
179+
SC_HANDLE hService = CreateService(hSCManager, XENGINE_SERVICE_NAME, XENGINE_SERVICE_SHOW, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_DEMAND_START, SERVICE_ERROR_NORMAL, tszFilePath, NULL, NULL, NULL, NULL, NULL);
180+
if (NULL == hService)
181+
{
182+
CloseServiceHandle(hSCManager);
183+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,安装服务失败,创建服务失败,错误码:%d"), GetLastError());
184+
return;
165185
}
166-
catch (const std::exception& e)
186+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,安装服务中,创建服务成功"));
187+
188+
SERVICE_DESCRIPTION st_ServiceDescpition = { };
189+
st_ServiceDescpition.lpDescription = const_cast<LPTSTR>(XENGINE_SERVICE_DESCRIPTION); // 描述内容
190+
if (!ChangeServiceConfig2(hService, SERVICE_CONFIG_DESCRIPTION, &st_ServiceDescpition))
167191
{
168-
std::wcerr << L"XEngine_InstallService exception: " << e.what() << L"\n";
192+
CloseServiceHandle(hSCManager);
193+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,安装服务失败,设置服务描述失败,错误码:%d"), GetLastError());
194+
return;
169195
}
170-
}
196+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,安装服务中,设置服务描述内容成功"));
171197

198+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,安装服务成功"));
199+
}
172200
// 卸载服务
173201
void XEngine_UninstallService()
174202
{
175-
try
203+
SC_HANDLE hSCManager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
204+
if (NULL == hSCManager)
176205
{
177-
auto hSCManager = std::unique_ptr<std::remove_pointer_t<SC_HANDLE>, decltype(&CloseServiceHandle)>(OpenSCManagerW(nullptr, nullptr, SC_MANAGER_ALL_ACCESS), CloseServiceHandle);
178-
if (!hSCManager)
179-
{
180-
throw std::runtime_error("OpenSCManager failed");
181-
}
182-
auto hService = std::unique_ptr<std::remove_pointer_t<SC_HANDLE>, decltype(&CloseServiceHandle)>(OpenServiceW(hSCManager.get(), SERVICE_NAME, DELETE), CloseServiceHandle);
183-
if (!hService)
184-
{
185-
throw std::runtime_error("OpenService failed");
186-
}
206+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,卸载服务失败,打开权限错误,错误码:%d"), GetLastError());
207+
return;
208+
}
209+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,卸载服务中,打开权限成功"));
187210

188-
if (!DeleteService(hService.get()))
189-
{
190-
throw std::runtime_error("DeleteService failed");
191-
}
192-
std::wcout << L"Service uninstalled successfully\n";
211+
SC_HANDLE hService = OpenService(hSCManager, XENGINE_SERVICE_NAME, DELETE);
212+
if (!hService)
213+
{
214+
CloseServiceHandle(hSCManager);
215+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,卸载服务失败,获取权限失败,错误码:%d"), GetLastError());
216+
return;
193217
}
194-
catch (const std::exception& e)
218+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,卸载服务中,获取删除权限成功"));
219+
220+
if (!DeleteService(hService))
195221
{
196-
std::wcerr << L"XEngine_UninstallService exception: " << e.what() << L"\n";
222+
CloseServiceHandle(hSCManager);
223+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_ERROR, _X("启动服务中,卸载服务失败,删除服务失败,错误码:%d"), GetLastError());
224+
return;
197225
}
226+
CloseServiceHandle(hSCManager);
227+
XLOG_PRINT(xhLog, XENGINE_HELPCOMPONENTS_XLOG_IN_LOGLEVEL_INFO, _X("服务运行中,卸载服务中,删除服务成功"));
198228
}

XEngine_Source/XEngine_ServiceApp/XEngine_APIServiceApp/XEngine_Configure.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
// Purpose: 配置文件操作代码
1111
// History:
1212
*********************************************************************/
13-
bool XEngine_Configure_Parament(int argc, wchar_t* argv[])
13+
bool XEngine_Configure_Parament()
1414
{
1515
LPCXSTR lpszConfigFile = _X("./XEngine_Config/XEngine_Config.json");
1616

XEngine_Source/XEngine_ServiceApp/XEngine_APIServiceApp/XEngine_Configure.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@
1010
// Purpose: 配置文件操作代码
1111
// History:
1212
*********************************************************************/
13-
bool XEngine_Configure_Parament(int argc, wchar_t* argv[]);
13+
bool XEngine_Configure_Parament();

0 commit comments

Comments
 (0)