#ifdef MYUSE_LIBPATH\r
wxString g_szLibPath;\r
\r
-wxString inline myMakeXMLName(const wxString & szFile)\r
-{\r
- return g_szLibPath + szFile + wxT(".xml");\r
-}\r
-\r
#ifdef __WINDOWS__\r
BOOL WINAPI DllMain(HINSTANCE hLib, DWORD dwReason, void *)\r
{\r
{\r
wchar_t szName[1024];\r
::GetModuleFileName(hLib, szName, sizeof(szName) - 1);\r
- g_szLibPath = wxFileName::wxFileName(WC2String(szName)).GetPath(true);\r
+ g_szLibPath = wxFileName(WC2String(szName)).GetPath(true);\r
}\r
return TRUE;\r
}\r
#else\r
#include <dlfcn.h>\r
-__attribute__((constructor)) void on_load(void)\r
+// GCC4.7ではg_szLibPathへの代入で不正終了してしまうので、myMakeXMLNameの初回に呼ぶように変更。\r
+//__attribute__((constructor))\r
+void inline on_load(void)\r
{\r
Dl_info dl;\r
dladdr((void *) on_load, & dl);\r
g_szLibPath = wxFileName(UTF82String(dl.dli_fname)).GetPath(true);\r
}\r
#endif\r
+\r
+wxString myMakeXMLName(const wxString & szFile)\r
+{\r
+#ifdef __LINUX__\r
+ if (g_szLibPath.IsEmpty())\r
+ {\r
+ // 初回はライブラリが存在するディレクトリを取得。\r
+ on_load();\r
+ }\r
+#endif\r
+ return g_szLibPath + szFile + wxT(".xml");\r
+}\r
#endif\r