wxwidgets getting application path - wxwidgets

My config:
wxWidgets version: 3.0.1
Codeblocks version: 13.12 64bit
Compiler: gnu gcc 4.8.2
platform/OS: Linux 64bit Ubuntu 14.04.1 LTS
I can't seem to use the UseAppInfo correctly. I don't want the app name in the path, just the path of the executable. I am trying this:
wxStandardPaths::Get().UseAppInfo(wxStandardPaths::AppInfo_None);
wxString strExe = wxStandardPaths::Get().GetExecutablePath();
strExe contains the full path and the executable name, despite the option AppInfo_None in UseAppInfo in the line above it. I am aware that I am getting an instance from a Get() which doesn't seem to be carried over in the next line.. The doc says to use wxStandardPaths through wxStandardPaths::Get().
I did tried the following as well, which doesn't work either (surprisingly it doesn't crash and does give me the full path including app name):
wxStandardPaths &path = wxStandardPaths::Get();
path.UseAppInfo(wxStandardPaths::AppInfo_None);
wxString strExe = path.GetExecutablePath();
Any suggestions?

wxGetCwd() is not guaranteed to give the path to the application. In fact, you can change that path while the application is running using wxSetWorkingDirectory.
The best method I have found to get the path to the application is to use GetExecutablePath and use wxFileName to remove the application name.
//need to include <wx/filename.h> and <wx/stdpaths.h>
wxFileName f(wxStandardPaths::Get().GetExecutablePath());
wxString appPath(f.GetPath());

GetExecutablePath() is not affected by UseAppInfo() because it just gives you the executable path, wherever it is. Other wxStandardPaths methods do honour it and you probably want to use something like GetDataDir() instead of GetExecutablePath().

try:
wxString myPath(wxGetCwd());
Returns the path of the app folder in myPath variable.
wxString myPath is variable type wxString wxGetCwd() return path app folder.
wxString myPath(wxGetCwd()); is path for app folder sets in myPath variable

Related

The PhantomJS executable could not be found on the current PATH. To be resolved

I am getting following error message
The PhantomJS executable could not be found on the current PATH. from the compiler when I am building my project.
Is there any solution existing for it?
On Linux, while calling the phantomJS driver instance, you need to pass a variable executable_path
browser = webdriver.PhantomJS(executable_path = '/home/someLocation/phantomJS')
This solved it for me

FreeType2 Crash on FT_Init_FreeType

I'm currently trying to learn how to use the FreeType2 library for drawing fonts with OpenGL. However, when I start the program it immediately crashes with the following error: "(Can't correctly start the application (0xc000007b))"
Commenting the FT_Init_FreeType removes the error and my game starts just fine. I'm wondering if it's my code or has something to do with loading the dll file.
My code:
#include "SpaceGame.h"
#include <ft2build.h>
#include FT_FREETYPE_H
//Freetype test
FT_Library library;
Game::Game(int Width, int Height)
{
//Freetype
FT_Error error = FT_Init_FreeType(&library);
if(error)
{
cout << "Error occured during FT initialisation" << endl;
}
And my current use of the FreeType2 files.
Inside my bin folder (where debug .exe is located) is: freetype6.dll, libfreetype.dll.a, libfreetype-6.dll.
In Code::Blocks, I've linked to the lib and include folder of the FreeType 2.3.5.1 version.
And included a compiler flag: -lfreetype
My program starts perfectly fine if I comment out the FT_Init function which means the includes, and library files should be fine.
For people who might stumble upon the same problem and can't find it out. I'll post my solution:
It seemed the error code ussualy comes up with loading .dll's. I used process explorer to check if my program was actually loading the correct .dll but it wasn't. I deleted my FreeType dll's and replaced them with a version compiled specifically for my version of windows to make sure I have the right dll's. Replacing the old one with the new one helped.
I had the same problem, turnes out that I had forgotten to copy over the zlib1.dll file.
I had the same "cant correctly start" error. It turned out my program was finding a zlib1.dll in something like c:\intel\wifi\bin, that DependencyWalker flagged as AMD64 (my PC is Win7 64, but my app is 32 bits.) It was fixed when I copied freeType's zlib1.dll to SysWOW64. Tough nut to crack!

FDT5 Haxe Compilation Error "Uncaught exception - module.c(124) : Builtin not found : fasthash"

I am a user of FDT5 and getting this very strange Haxe compiler error when using v2.09 of Haxe and v1.8.2 of NekoVM.
"Uncaught exception - module.c(124) : Builtin not found : fasthash"
Can anyone help me resolve this error as can't compile my FDT5 project, as if I compile it directly in Mac OSX Lion. Terminal it does not report any issues.
Any help would be most appreciated.
You may need to setup the path to your Neko installation
FDT 5.5 ships with Neko, but the path to it is not set by default. Because it's not, you may get errors as you mentioned:
To fix this, go to Preferences>Haxe>Neko VM and point to a Neko installation directory.
Custom Installation Directory
You can point to a custom installation. Perhaps if you used the standalone installer from the Haxe website.
Using FDT's Neko Installation
For windows you can just point to FDT5>haxe>neko-1.8.2-osx
For OSX, because FDT is a self contained package, you can't naviagate to Neko via the OSX GUI. Instead type in this path, or copy and paste the path from where your Haxe location is set and paste it into the Neko location. Then just change the last directory name to the name of the Neko folder: haxe-2.09-osx -> neko-1.8.2-osx.

Another JNI UnsatisfiedLinkError DLL problem

I've read lots of posts about this, but none address my problem.
I have a very small DLL that allows a Java process to send windows messages. It simply calls
FindWindowEx(...)
SendMessage(...)
I have compiled that with VS2005 and linked with /MT and all's fine, but if I try to make my DLL depend on MSVCRT and link with /MD then I get the unsatisfied link error.
java.lang.UnsatisfiedLinkError: MyDll.dll: Can't find dependent libraries
According to depends.exe it has two missing DLLs, GPSVC.DLL and IESHIMS.DLL. The first exists in c:\windows\system32 and the second is in a winsxs path. There are LOADS of other DLLs loaded from c:\windows\system32 and GPSVC.DLL is an odd one in that even as admin on my win7x64 machine, I cannot run depends on that - it says it's not found...
Anyway, I tried forcing a load of both of those DLLs in my Java by (simplified - I'm not in control of java.library.path)
Field field = ClassLoader.class.getDeclaredField("usr_paths");
field.setAccessible(true);
String[] paths = (String[]) field.get(null);
String[] tmp = new String[paths.length + 2];
System.arraycopy(paths, 0, tmp, 0, paths.length);
tmp[paths.length] = "c:/windows/system32";
tmp[paths.length + 1] = "c:/Windows/winsxs/amd64_microsoft-windows-ie-ieshims_31bf3856ad364e35_8.0.7601.17514_none_c06d7c9c27da8591";
field.set(null, tmp);
but that made no difference. I can fallback to make it statically linked, but I'd rather not.
Any ideas on what I can try next?
Antony
Well, I´m using Visual Studio 2010 but it could work on 2005 too.
You could try configuring the VC compiler using vcvarsall.bat that you can find in ProgramFiles in /MicrosoftVisualStudio20xx/VC .
You have only to launch vsvarsall.bat in Command Line with one of these options: x86 or ia64 or x86_amd64 or x86_ia64. I don´t know if it will help but it could be one of the problems that VC compiler is not configured to work with 64 bit machine.
When I´m working with JNI I use command line to compile the code and I had to configure the compiler on 64 bit machine.
Or you could pobably try to compile it via Command Line. Here is my favourite tutorial http://www.ibm.com/developerworks/java/tutorials/j-jni/index.html

dlopen() error image not found

I have software that first loads a .dylib lets call libFirst.dylib using the following command:
void* handle = dlopen(path.c_str(), RTLD_LAZY | RTLD_GLOBAL);
Later on inside a function from the loaded libFirst.dylib I attempt to load another .dylib using the same command but for libSecond.dylib, the loading of this shared library gives me the following warnings in my Xcode console:
error warning: Ignored unknown object module at 0x129310 with type 0x8a8399
dlerror: dlopen(/path/libSecond.dylib, 9): Library not loaded: libFirst.dylib
Referenced from: /path/libSecond.dylib
Reason: image not found
What I don't get is that its says libFirst.dylib is not loaded but I am currently inside a function from libFirst.dylib, so how can this be?
All my paths in DYLD_LIBRARY_PATH appear correct too.
Thanks in advance, I have been stuck on this for days.
I ended up using -install_name to change the install name of all my libraries to #rpath/dylibName.dylib and then in Xcode I set the Runpath Search paths using #loader_path to find all my .dylibs that I was using.
use:
install_name_tool -id #executable_path/../Frameworks/mylib.dylib mylib.dylib
then check it with:
otool -D mylib.dylib
I think an easier way to get around this error would be to revert to an earlier version where you were not getting this error. Right click on the project folder and navigate to local history to revert to an earlier version. I verified this to be working on the android studio installed on Mac OS Big sur.