kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
mavzermete 1
mavzermete
xranzei 1
xranzei
noisiv 1
noisiv
Manwe Work 1
Manwe Work
Hikaye Ekle

Foxsfs Source Build

  • Konuyu başlatan Konuyu başlatan korkmazav
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 3
  • Görüntüleme Görüntüleme 2K

HERAKLES Otomatik Avlı kalıcı sunucu. 19 Haziran'da açılıyor. Atius & Wizard güvencesiyle hemen kayıt ol, ön kayıt ödülleri aktif. HEMEN TIKLA!

source sorunsuz olarak build ettim ama oyuna girişte böyle hata alıyorum

vNoOBu.jpg
 
Çözüm
[CODE title="UserInterface.cpp"]#include "StdAfx.h"
#include "PythonApplication.h"
#include "ProcessScanner.h"
#include "PythonExceptionSender.h"
#include "resource.h"
#include "Version.h"

#ifdef _DEBUG
#include <crtdbg.h>
#endif

#include "../eterPack/EterPackManager.h"
#include "../eterLib/Util.h"
#include "../CWebBrowser/CWebBrowser.h"
#include "../eterBase/CPostIt.h"

#include "CheckLatestFiles.h"

extern "C" {
extern int _fltused;
volatile int _AVOID_FLOATING_POINT_LIBRARY_BUG = _fltused;
};

#pragma comment(linker, "/NODEFAULTLIB:libci.lib")

#pragma comment( lib, "version.lib" )
#pragma comment( lib, "python27.lib" )
#pragma comment( lib, "imagehlp.lib" )
#pragma comment( lib, "devil.lib" )
#pragma comment( lib, "granny2.lib" )
#pragma comment( lib...
[CODE title="UserInterface.cpp"]#include "StdAfx.h"
#include "PythonApplication.h"
#include "ProcessScanner.h"
#include "PythonExceptionSender.h"
#include "resource.h"
#include "Version.h"

#ifdef _DEBUG
#include <crtdbg.h>
#endif

#include "../eterPack/EterPackManager.h"
#include "../eterLib/Util.h"
#include "../CWebBrowser/CWebBrowser.h"
#include "../eterBase/CPostIt.h"

#include "CheckLatestFiles.h"

extern "C" {
extern int _fltused;
volatile int _AVOID_FLOATING_POINT_LIBRARY_BUG = _fltused;
};

#pragma comment(linker, "/NODEFAULTLIB:libci.lib")

#pragma comment( lib, "version.lib" )
#pragma comment( lib, "python27.lib" )
#pragma comment( lib, "imagehlp.lib" )
#pragma comment( lib, "devil.lib" )
#pragma comment( lib, "granny2.lib" )
#pragma comment( lib, "mss32.lib" )
#pragma comment( lib, "winmm.lib" )
#pragma comment( lib, "imm32.lib" )
#pragma comment( lib, "oldnames.lib" )
#pragma comment( lib, "SpeedTreeRT.lib" )
#pragma comment( lib, "dinput8.lib" )
#pragma comment( lib, "dxguid.lib" )
#pragma comment( lib, "ws2_32.lib" )
#pragma comment( lib, "strmiids.lib" )
#pragma comment( lib, "ddraw.lib" )
#pragma comment( lib, "dmoguids.lib" )
#ifdef ENABLE_FOX_FS
#pragma comment( lib, "lz4.lib" )
#pragma comment( lib, "xxhash.lib" )
#pragma comment( lib, "FoxFS.lib" )
#endif
//#pragma comment( lib, "wsock32.lib" )
#include <stdlib.h>
#include <cryptopp/cryptoppLibLink.h>
bool __IS_TEST_SERVER_MODE__=false;

extern bool SetDefaultCodePage(DWORD codePage);

static const char * sc_apszPythonLibraryFilenames[] =
{
"UserDict.pyc",
"__future__.pyc",
"copy_reg.pyc",
"linecache.pyc",
"ntpath.pyc",
"os.pyc",
"site.pyc",
"stat.pyc",
"string.pyc",
"traceback.pyc",
"types.pyc",
"\n",
};

char gs_szErrorString[512] = "";

void ApplicationSetErrorString(const char* szErrorString)
{
strcpy(gs_szErrorString, szErrorString);
}

bool CheckPythonLibraryFilenames()
{
for (int i = 0; *sc_apszPythonLibraryFilenames != '\n'; ++i)
{
std::string stFilename = "lib\\";
stFilename += sc_apszPythonLibraryFilenames;

if (_access(stFilename.c_str(), 0) != 0)
{
return false;
}

MoveFile(stFilename.c_str(), stFilename.c_str());
}

return true;
}

struct ApplicationStringTable
{
HINSTANCE m_hInstance;
std::map<DWORD, std::string> m_kMap_dwID_stLocale;
} gs_kAppStrTable;

void ApplicationStringTable_Initialize(HINSTANCE hInstance)
{
gs_kAppStrTable.m_hInstance=hInstance;
}

const std::string& ApplicationStringTable_GetString(DWORD dwID, LPCSTR szKey)
{
char szBuffer[512];
char szIniFileName[256];
char szLocale[256];

::GetCurrentDirectory(sizeof(szIniFileName), szIniFileName);
if(szIniFileName[lstrlen(szIniFileName)-1] != '\\')
strcat(szIniFileName, "\\");
strcat(szIniFileName, "metin2client.dat");

strcpy(szLocale, LocaleService_GetLocalePath());
if(strnicmp(szLocale, "locale/", strlen("locale/")) == 0)
strcpy(szLocale, LocaleService_GetLocalePath() + strlen("locale/"));
::GetPrivateProfileString(szLocale, szKey, NULL, szBuffer, sizeof(szBuffer)-1, szIniFileName);
if(szBuffer[0] == '\0')
LoadString(gs_kAppStrTable.m_hInstance, dwID, szBuffer, sizeof(szBuffer)-1);
if(szBuffer[0] == '\0')
::GetPrivateProfileString("en", szKey, NULL, szBuffer, sizeof(szBuffer)-1, szIniFileName);
if(szBuffer[0] == '\0')
strcpy(szBuffer, szKey);

std::string& rstLocale=gs_kAppStrTable.m_kMap_dwID_stLocale[dwID];
rstLocale=szBuffer;

return rstLocale;
}

const std::string& ApplicationStringTable_GetString(DWORD dwID)
{
char szBuffer[512];

LoadString(gs_kAppStrTable.m_hInstance, dwID, szBuffer, sizeof(szBuffer)-1);
std::string& rstLocale=gs_kAppStrTable.m_kMap_dwID_stLocale[dwID];
rstLocale=szBuffer;

return rstLocale;
}

const char* ApplicationStringTable_GetStringz(DWORD dwID, LPCSTR szKey)
{
return ApplicationStringTable_GetString(dwID, szKey).c_str();
}

const char* ApplicationStringTable_GetStringz(DWORD dwID)
{
return ApplicationStringTable_GetString(dwID).c_str();
}

////////////////////////////////////////////

int Setup(LPSTR lpCmdLine); // Internal function forward

bool PackInitialize(const char * c_pszFolder)
{
#if defined(ENABLE_FOX_FS) || defined(USE_ZFS)
NANOBEGIN
if (_access(c_pszFolder, 0) != 0)
return true;

std::string stFolder(c_pszFolder);
stFolder += "/";

CTextFileLoader::SetCacheMode();

#if defined(USE_RELATIVE_PATH)
CEterPackManager::Instance().SetRelativePathMode();
#endif

CEterPackManager::Instance().SetCacheMode();
CEterPackManager::Instance().SetSearchMode(CEterPackManager::SEARCH_PACK);

CSoundData::SetPackMode();
CEterPackManager::Instance().RegisterPack("pack/maps", "*");
CEterPackManager::Instance().RegisterPack("pack/update1", "d:/ymir work/");
CEterPackManager::Instance().RegisterPack("pack/bgm", "bgm");
CEterPackManager::Instance().RegisterPack("pack/effect", "d:/ymir work/effect");
CEterPackManager::Instance().RegisterPack("pack/etc", "d:/ymir work");
CEterPackManager::Instance().RegisterPack("pack/guild", "d:/ymir work/guild");
CEterPackManager::Instance().RegisterPack("pack/icon", "icon");
CEterPackManager::Instance().RegisterPack("pack/item", "d:/ymir work/item");
CEterPackManager::Instance().RegisterPack("pack/locale", "locale");
CEterPackManager::Instance().RegisterPack("pack/monster", "d:/ymir work/monster");
CEterPackManager::Instance().RegisterPack("pack/monster2", "d:/ymir work/monster2");
CEterPackManager::Instance().RegisterPack("pack/npc", "d:/ymir work/npc");
CEterPackManager::Instance().RegisterPack("pack/npc2", "d:/ymir work/npc2");
CEterPackManager::Instance().RegisterPack("pack/pc_assassin", "d:/ymir work/pc");
CEterPackManager::Instance().RegisterPack("pack/pc_common", "d:/ymir work/pc");
CEterPackManager::Instance().RegisterPack("pack/pc_sura", "d:/ymir work/pc");
CEterPackManager::Instance().RegisterPack("pack/pc_shaman", "d:/ymir work/pc");
CEterPackManager::Instance().RegisterPack("pack/pc_warrior", "d:/ymir work/pc");
CEterPackManager::Instance().RegisterPack("pack/pc2_assassin", "d:/ymir work/pc2");
CEterPackManager::Instance().RegisterPack("pack/pc2_common", "d:/ymir work/pc2");
CEterPackManager::Instance().RegisterPack("pack/pc2_sura", "d:/ymir work/pc2");
CEterPackManager::Instance().RegisterPack("pack/pc2_shaman", "d:/ymir work/pc2");
CEterPackManager::Instance().RegisterPack("pack/pc2_warrior", "d:/ymir work/pc2");
CEterPackManager::Instance().RegisterPack("pack/property", "property");
CEterPackManager::Instance().RegisterPack("pack/season1", "season1");
CEterPackManager::Instance().RegisterPack("pack/season2", "season2");
CEterPackManager::Instance().RegisterPack("pack/sound", "sound");
CEterPackManager::Instance().RegisterPack("pack/terrain", "d:/ymir work/terrainmaps");
CEterPackManager::Instance().RegisterPack("pack/textureset", "textureset");
CEterPackManager::Instance().RegisterPack("pack/tree", "d:/ymir work/tree");
CEterPackManager::Instance().RegisterPack("pack/zone", "d:/ymir work/zone");
CEterPackManager::Instance().RegisterPack("pack/npc_pet", "d:/ymir work/npc_pet");
CEterPackManager::Instance().RegisterPack("pack/npc_mount", "d:/ymir work/npc_mount");
CEterPackManager::Instance().RegisterPack("pack/revival_interface_thor2", "d:/ymir work/revival_interface_thor2");
CEterPackManager::Instance().RegisterPack("pack/revival_interface_thor2", "revival_interface_thor2");

CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str());
NANOEND
return true;
#else
NANOBEGIN
string block_folder;

block_folder == "D:\\ymir work";

struct stat st;
if( stat( "D:\\ymir work", & st ) == 0 )
{
LogBoxf("Something is wrong delete the file from D (ymir work)");
return true;
}

if (_access(c_pszFolder, 0) != 0)
return true;

std::string stFolder(c_pszFolder);
stFolder += "/";

std::string stFileName(stFolder);
stFileName += "Index";

CMappedFile file;
LPCVOID pvData;

if (!file.Create(stFileName.c_str(), &pvData, 0, 0))
{
LogBoxf("FATAL ERROR! File not exist: %s", stFileName.c_str());
TraceError("FATAL ERROR! File not exist: %s", stFileName.c_str());
return true;
}

CMemoryTextFileLoader TextLoader;
TextLoader.Bind(file.Size(), pvData);

bool bPackFirst = TRUE;

const std::string& strPackType = TextLoader.GetLineString(0);

if (strPackType.compare("FILE") && strPackType.compare("PACK"))
{
TraceError("Pack/Index has invalid syntax. First line must be 'PACK' or 'FILE'");
return false;
}

#ifdef _DISTRIBUTE
Tracef("알림: 팩 모드입니다.\n");

//if (0 == strPackType.compare("FILE"))
//{
// bPackFirst = FALSE;
// Tracef("알림: 파일 모드입니다.\n");
//}
//else
//{
// Tracef("알림: 팩 모드입니다.\n");
//}
#else
bPackFirst = FALSE;
Tracef("알림: 파일 모드입니다.\n");
#endif

CTextFileLoader::SetCacheMode();
#if defined(USE_RELATIVE_PATH)
CEterPackManager::Instance().SetRelativePathMode();
#endif
CEterPackManager::Instance().SetCacheMode();
CEterPackManager::Instance().SetSearchMode(bPackFirst);

CSoundData::SetPackMode(); // Miles 파일 콜백을 셋팅

std::string strPackName, strTexCachePackName;
for (DWORD i = 1; i < TextLoader.GetLineCount() - 1; i += 2)
{
const std::string & c_rstFolder = TextLoader.GetLineString(i);
const std::string & c_rstName = TextLoader.GetLineString(i + 1);

strPackName = stFolder + c_rstName;
strTexCachePackName = strPackName + "_texcache";

CEterPackManager::Instance().RegisterPack(strPackName.c_str(), c_rstFolder.c_str());
CEterPackManager::Instance().RegisterPack(strTexCachePackName.c_str(), c_rstFolder.c_str());
}

CEterPackManager::Instance().RegisterRootPack((stFolder + std::string("root")).c_str());
NANOEND
return true;
#endif
}

bool RunMainScript(CPythonLauncher& pyLauncher, const char* lpCmdLine)
{
initpack();
initdbg();
initime();
initgrp();
initgrpImage();
initgrpText();
initwndMgr();
/////////////////////////////////////////////
initudp();
initapp();
initsystem();
initchr();
initchrmgr();
initPlayer();
initItem();
initNonPlayer();
initTrade();
initChat();
initTextTail();
initnet();
initMiniMap();
initProfiler();
initEvent();
initeffect();
initfly();
initsnd();
initeventmgr();
initshop();
initskill();
#ifdef ENABLE_GROWTH_PET_SYSTEM
initskillpet();
#endif
initquest();
initBackground();
initMessenger();
#if defined(WJ_COMBAT_ZONE)
initCombatZoneSystem();
#endif
#ifdef WJ_CHANGELOOK_SYSTEM
initChangeLook();
#endif
#ifdef WJ_SHOP_SEARCH_SYSTEM
initprivateShopSearch();
#endif
#ifdef ENABLE_EVENT_INFORMATION_SYSTEM
initGameEvents();
#endif
#ifdef ENABLE_SASH_SYSTEM
initSash();
#endif
#ifdef ENABLE_FEATURES_OXEVENT
initOxEvent();
#endif
#ifdef ENABLE_MANAGER_BANK_SYSTEM
initBankManager();
#endif
initsafebox();
initguild();
initServerStateChecker();

NANOBEGIN

// RegisterDebugFlag
{
std::string stRegisterDebugFlag;

#ifdef _DISTRIBUTE
stRegisterDebugFlag ="__DEBUG__ = 0";
#else
stRegisterDebugFlag ="__DEBUG__ = 1";
#endif

if (!pyLauncher.RunLine(stRegisterDebugFlag.c_str()))
{
TraceError("RegisterDebugFlag Error");
return false;
}
}

// RegisterCommandLine
{
std::string stRegisterCmdLine;

const char * loginMark = "-cs";
const char * loginMark_NonEncode = "-ncs";
const char * seperator = " ";

std::string stCmdLine;
const int CmdSize = 3;
vector<std::string> stVec;
SplitLine(lpCmdLine,seperator,&stVec);
if (CmdSize == stVec.size() && stVec[0]==loginMark)
{
char buf[MAX_PATH]; //TODO 아래 함수 string 형태로 수정
base64_decode(stVec[2].c_str(),buf);
stVec[2] = buf;
string_join(seperator,stVec,&stCmdLine);
}
else if (CmdSize <= stVec.size() && stVec[0]==loginMark_NonEncode)
{
stVec[0] = loginMark;
string_join(" ",stVec,&stCmdLine);
}
else
stCmdLine = lpCmdLine;

stRegisterCmdLine ="__COMMAND_LINE__ = ";
stRegisterCmdLine+='"';
stRegisterCmdLine+=stCmdLine;
stRegisterCmdLine+='"';

const CHAR* c_szRegisterCmdLine=stRegisterCmdLine.c_str();
if (!pyLauncher.RunLine(c_szRegisterCmdLine))
{
TraceError("RegisterCommandLine Error");
return false;
}
}
{
vector<std::string> stVec;
SplitLine(lpCmdLine," " ,&stVec);

if (stVec.size() != 0 && "--pause-before-create-window" == stVec[0])
{
system("pause");
}

if (!pyLauncher.RunFile("system.py"))
{
TraceError("RunMain Error");
return false;
}
}

NANOEND
return true;
}

bool Main(HINSTANCE hInstance, LPSTR lpCmdLine)
{
#ifdef LOCALE_SERVICE_YMIR
extern bool g_isScreenShotKey;
g_isScreenShotKey = true;
#endif

DWORD dwRandSeed=time(NULL)+DWORD(GetCurrentProcess());
srandom(dwRandSeed);
srand(random());

SetLogLevel(1);

#ifdef LOCALE_SERVICE_VIETNAM_MILD
extern BOOL USE_VIETNAM_CONVERT_WEAPON_VNUM;
USE_VIETNAM_CONVERT_WEAPON_VNUM = true;
#endif

if (_access("perf_game_update.txt", 0)==0)
{
DeleteFile("perf_game_update.txt");
}

if (_access("newpatch.exe", 0)==0)
{
system("patchupdater.exe");
return false;
}
#ifndef __VTUNE__
ilInit();
#endif
if (!Setup(lpCmdLine))
return false;

#ifdef _DEBUG
OpenConsoleWindow();
OpenLogFile(true); // true == uses syserr.txt and log.txt
#else
OpenLogFile(true); // false == uses syserr.txt only
#endif

static CLZO lzo;
static CEterPackManager EterPackManager;

if (!PackInitialize("pack"))
{
LogBox("Pack Initialization failed. Check log.txt file..");
return false;
}

if(LocaleService_LoadGlobal(hInstance))
SetDefaultCodePage(LocaleService_GetCodePage());

CPythonApplication * app = new CPythonApplication;

app->Initialize(hInstance);

bool ret=false;
{
CPythonLauncher pyLauncher;
CPythonExceptionSender pyExceptionSender;
SetExceptionSender(&pyExceptionSender);

if (pyLauncher.Create())
{
ret=RunMainScript(pyLauncher, lpCmdLine); //게임 실행중엔 함수가 끝나지 않는다.
}

//ProcessScanner_ReleaseQuitEvent();

//게임 종료시.
app->Clear();

timeEndPeriod(1);
pyLauncher.Clear();
}

app->Destroy();
delete app;

return ret;
}

HANDLE CreateMetin2GameMutex()
{
SECURITY_ATTRIBUTES sa;
ZeroMemory(&sa, sizeof(SECURITY_ATTRIBUTES));
sa.nLength = sizeof(sa);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = FALSE;

return CreateMutex(&sa, FALSE, "Metin2GameMutex");
}

void DestroyMetin2GameMutex(HANDLE hMutex)
{
if (hMutex)
{
ReleaseMutex(hMutex);
hMutex = NULL;
}
}

void __ErrorPythonLibraryIsNotExist()
{
LogBoxf("FATAL ERROR!! Python Library file not exist!");
}

bool __IsTimeStampOption(LPSTR lpCmdLine)
{
const char* TIMESTAMP = "/timestamp";
return (strncmp(lpCmdLine, TIMESTAMP, strlen(TIMESTAMP))==0);
}

void __PrintTimeStamp()
{
#ifdef _DEBUG
if (__IS_TEST_SERVER_MODE__)
LogBoxf("METIN2 BINARY TEST DEBUG VERSION %s ( MS C++ %d Compiled )", __TIMESTAMP__, _MSC_VER);
else
LogBoxf("METIN2 BINARY DEBUG VERSION %s ( MS C++ %d Compiled )", __TIMESTAMP__, _MSC_VER);

#else
if (__IS_TEST_SERVER_MODE__)
LogBoxf("METIN2 BINARY TEST VERSION %s ( MS C++ %d Compiled )", __TIMESTAMP__, _MSC_VER);
else
LogBoxf("METIN2 BINARY DISTRIBUTE VERSION %s ( MS C++ %d Compiled )", __TIMESTAMP__, _MSC_VER);
#endif
}

bool __IsLocaleOption(LPSTR lpCmdLine)
{
return (strcmp(lpCmdLine, "--locale") == 0);
}

bool __IsLocaleVersion(LPSTR lpCmdLine)
{
return (strcmp(lpCmdLine, "--perforce-revision") == 0);
}

int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
#ifdef _DEBUG
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_CRT_DF | _CRTDBG_LEAK_CHECK_DF );
//_CrtSetBreakAlloc( 110247 );
#endif

ApplicationStringTable_Initialize(hInstance);

LocaleService_LoadConfig("locale.cfg");
SetDefaultCodePage(LocaleService_GetCodePage());

#if defined(CHECK_LATEST_DATA_FILES)
if (!CheckLatestFiles())
return 0;
#endif

bool bQuit = false;
int nArgc = 0;
PCHAR* szArgv = CommandLineToArgv( lpCmdLine, &nArgc );

for( int i=0; i < nArgc; i++ ) {
if(szArgv == 0)
continue;
if (__IsLocaleVersion(szArgv)) // #0000829: [M2EU] 버전 파일이 항상 생기지 않도록 수정
{
char szModuleName[MAX_PATH];
char szVersionPath[MAX_PATH];
GetModuleFileName(NULL, szModuleName, sizeof(szModuleName));
sprintf(szVersionPath, "%s.version", szModuleName);
FILE* fp = fopen(szVersionPath, "wt");
if (fp)
{
extern int METIN2_GET_VERSION();
fprintf(fp, "r%d\n", METIN2_GET_VERSION());
fclose(fp);
}
bQuit = true;
} else if (__IsLocaleOption(szArgv))
{
FILE* fp=fopen("locale.txt", "wt");
fprintf(fp, "service[%s] code_page[%d]",
LocaleService_GetName(), LocaleService_GetCodePage());
fclose(fp);
bQuit = true;
} else if (__IsTimeStampOption(szArgv))
{
__PrintTimeStamp();
bQuit = true;
} else if ((strcmp(szArgv, "--force-set-locale") == 0))
{
// locale 설정엔 인자가 두 개 더 필요함 (로케일 명칭, 데이터 경로)
if (nArgc <= i + 2)
{
MessageBox(NULL, "Invalid arguments", ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP);
goto Clean;
}

const char* localeName = szArgv[++i];
const char* localePath = szArgv[++i];

LocaleService_ForceSetLocale(localeName, localePath);
}
}

if(bQuit)
goto Clean;

#if defined(NEEDED_COMMAND_ARGUMENT)
// 옵션이 없으면 비정상 실행으로 간주, 프로그램 종료
if (strstr(lpCmdLine, NEEDED_COMMAND_ARGUMENT) == 0) {
MessageBox(NULL, ApplicationStringTable_GetStringz(IDS_ERR_MUST_LAUNCH_FROM_PATCHER, "ERR_MUST_LAUNCH_FROM_PATCHER"), ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP);
goto Clean;
}
#endif

#if defined(NEEDED_COMMAND_CLIPBOARD)
{
CHAR szSecKey[256];
CPostIt cPostIt( "VOLUME1" );

if( cPostIt.Get( "SEC_KEY", szSecKey, sizeof(szSecKey) ) == FALSE ) {
MessageBox(NULL, ApplicationStringTable_GetStringz(IDS_ERR_MUST_LAUNCH_FROM_PATCHER, "ERR_MUST_LAUNCH_FROM_PATCHER"), ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP);
goto Clean;
}
if( strstr(szSecKey, NEEDED_COMMAND_CLIPBOARD) == 0 ) {
MessageBox(NULL, ApplicationStringTable_GetStringz(IDS_ERR_MUST_LAUNCH_FROM_PATCHER, "ERR_MUST_LAUNCH_FROM_PATCHER"), ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP);
goto Clean;
}
cPostIt.Empty();
}
#endif

WebBrowser_Startup(hInstance);

if (!CheckPythonLibraryFilenames())
{
__ErrorPythonLibraryIsNotExist();
goto Clean;
}

Main(hInstance, lpCmdLine);

WebBrowser_Cleanup();

::CoUninitialize();

if(gs_szErrorString[0])
MessageBox(NULL, gs_szErrorString, ApplicationStringTable_GetStringz(IDS_APP_NAME, "APP_NAME"), MB_ICONSTOP);

Clean:
SAFE_FREE_GLOBAL(szArgv);

return 0;
}

static void GrannyError(granny_log_message_type Type,
granny_log_message_origin Origin,
char const* File,
granny_int32x Line,
char const *Error,
void *UserData)
{
}

int Setup(LPSTR lpCmdLine)
{
/*
* 타이머 정밀도를 올린다.
*/
TIMECAPS tc;
UINT wTimerRes;

if (timeGetDevCaps(&tc, sizeof(TIMECAPS)) != TIMERR_NOERROR)
return 0;

wTimerRes = MINMAX(tc.wPeriodMin, 1, tc.wPeriodMax);
timeBeginPeriod(wTimerRes);

/*
* 그래니 에러 핸들링
*/

//granny_log_callback Callback;
//Callback.Function = GrannyError;
//Callback.UserData = 0;
//GrannySetLogCallback(&Callback);
return 1;
}
[/CODE]
 
Çözüm

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst