ÕâÆª½Ì³ÌC++ GetExePathº¯Êý´úÂëʾÀýдµÃºÜʵÓã¬Ï£ÍûÄܰﵽÄú¡£
±¾ÎÄÕûÀí»ã×ÜÁËC++ÖÐGetExePathº¯ÊýµÄµäÐÍÓ÷¨´úÂëʾÀý¡£Èç¹ûÄúÕý¿àÓÚÒÔÏÂÎÊÌ⣺C++ GetExePathº¯ÊýµÄ¾ßÌåÓ÷¨£¿C++ GetExePathÔõôÓã¿C++ GetExePathʹÓõÄÀý×Ó£¿ÄÇô¹§Ï²Äú, ÕâÀᆱѡµÄº¯Êý´úÂëʾÀý»òÐí¿ÉÒÔΪÄúÌṩ°ïÖú¡£ ÔÚÏÂÎÄÖÐÒ»¹²Õ¹Ê¾ÁËGetExePathº¯ÊýµÄ30¸ö´úÂëʾÀý£¬ÕâЩÀý×ÓĬÈϸù¾ÝÊÜ»¶Ó³Ì¶ÈÅÅÐò¡£Äú¿ÉÒÔΪϲ»¶»òÕ߸оõÓÐÓõĴúÂëµãÔÞ£¬ÄúµÄÆÀ¼Û½«ÓÐÖúÓÚÎÒÃǵÄÏµÍ³ÍÆ¼ö³ö¸ü°ôµÄC++´úÂëʾÀý¡£ ʾÀý1: GenerateExe void GenerateExe() { std::wstring apk = GetExePath() + L"//dependency//Android//Local//install.apk"; DeleteFileW(apk.c_str()); GenerateApk(apk); // µ÷Óà packet.exe£¬Éú³É exe WCHAR wzCmdline[1024] = {0}; wsprintf(wzCmdline, L"%s//dependency//Android//Local//packet.exe /"%s/" %s", GetExePath().c_str(), GetPath().c_str(), m_rooted ? L"root" : L"unroot"); STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); si.cb = sizeof(si); ZeroMemory( &pi, sizeof(pi) ); si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = SW_HIDE; CreateProcess(NULL, wzCmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi); WaitForSingleObject( pi.hProcess, INFINITE ); CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); }
¿ª·¢ÕßID:yzx65£¬ÏîÄ¿Ãû³Æ:GenerateFrontEnd£¬´úÂëÐÐÊý:30£¬
ʾÀý2: GetExePathvoid ConfigDir::_SetupSitePath(){#ifdef __WXMSW__ m_sSitePath = GetExePath(); nwxFileUtil::EndWithSeparator(&m_sSitePath); m_sSitePath.Append("site");#endif#ifdef __WXMAC__ wxString sEXE = GetExePath(); const wxChar *psLib = wxS("/Library/Application Support"); const wxChar *psSubDir = wxS("/Osiris-Files"); if( sEXE.StartsWith(wxS("/Applications/")) && wxDir::Exists(psLib) ) { m_sSitePath = psLib; m_sSitePath.Append(psSubDir); } else { wxString sUp3 = GetExePath(); nwxFileUtil::UpDir(&sUp3,3); nwxFileUtil::NoEndWithSeparator(&sUp3); sUp3.Append(psSubDir); m_sSitePath = sUp3; }#endif}
¿ª·¢ÕßID:HelloWilliam£¬ÏîÄ¿Ãû³Æ:osiris£¬´úÂëÐÐÊý:29£¬
ʾÀý3: mainint main(int argc, char **argv) { try { std::string memMaxArg = std::string(); char * varMemMax = getenv("NEXTFRACTAL_MAX_MEMORY"); int varMemMaxLen = varMemMax != NULL ? strlen(varMemMax) : 0; if (varMemMaxLen > 0) { memMaxArg.append("-Xmx"); memMaxArg.append(std::to_string(std::stoi(varMemMax))); memMaxArg.append("m"); } else { memMaxArg.append("-Xmx3g"); } std::string basePath = GetBasePath(GetExePath()); std::cout << "Base path " << basePath << std::endl; std::string jarsPath = basePath + "/../Resources"; std::string classpathArg = "-Djava.class.path=" + GetClasspath(jarsPath); std::string libPathArg = "-Djava.library.path=" + basePath + "/../Resources"; std::string locPathArg = "-Dbrowser.location=" + basePath + "/../../../examples"; const char *vm_arglist[] = { "-Djava.util.logging.config.class=com.nextbreakpoint.nextfractal.runtime.LogConfig", classpathArg.c_str(), libPathArg.c_str(), locPathArg.c_str(), memMaxArg.c_str(), 0 }; struct start_args args(vm_arglist, "com/nextbreakpoint/nextfractal/runtime/javafx/NextFractalApp"); pthread_t thr; pthread_create(&thr, NULL, start_java, &args); CFRunLoopRun(); } catch (const std::runtime_error& e) { ShowAlert("Did you install Java JDK 8 or later?", e); }}
¿ª·¢ÕßID:adriens£¬ÏîÄ¿Ãû³Æ:nextfractal£¬´úÂëÐÐÊý:34£¬
|