32bit Qt application can't start correctly (0xc000007b) - windows

I have a problem with running my 32bit C++/Qt application without Qt Creator. While it starts I'm getting the following error:
The application was unable to start correctly (0xc000007b)
This app starts correctly when I'm running its in Qt Creator. What should I do to open its by .exe file? I checked this app using DUMPBIN /header
FILE HEADER VALUES
14C machine (x86)
(...)
OPTIONAL HEADER VALUES
10B magic # (PE32)
I use Windows 7 64 bit but my application is 32 bit, so I checked .exe in Dependency Walker and I saw, that 3 modules in main dependency have 64bit icons. What is the reason and why program runs successfully when I use Qt Creator? I compile my app usingqmake.exe r -spec win32-g++ and mingw32-make.exe

Related

gtk+ native ms windows application - how do I redistribute the gtk libraries with my app?

I've compile my helloworld gtk+ application using MinGW for Native MS Windows. The instructions I followed were here.
If I run the helloworld.exe application from the same command window that I built the application, it works fine.
However, I would like to distribute the gtk+ libraries with my app, so I have downloaded and extracted all of the runtimes from http://www.gtk.org/download/win32.php.
I have also copied my helloworld.exe application to the bin folder with the gtk runtime files.
When I attempt to run my application in a new command prompt, I get the following error:
My machine is 64 bit, but I downloaded the 32 bit runtime for gtk.
Any pointers will be appreciated.
One option is to extract the gtk+ all-in-one-bundle to a clean folder, and copy the application to the extracted bin folder.
The extracted all-in-one-bundle can then be zipped with the included application and distributed as a zip or tar file.

Lua for windows https error: "%1 is not a valid Win32 application"

I've got a question about Lua and https. I'm developing some software for a router which supports Lua. The bad thing is that this router doesn't support debugging. So I was looking for an IDE for Lua.
I'm using the Lua Development Tools and LuaForWindows on a Win 7 64-bit OS. Till now everything works like it should. But now I have to call some urls by https. The router itself has a package ssl.lua and you can user this package with the require ("ssl.https") statement. But I want to debug it with the Lua Development Tools. I was searching for Windows compatible packages and have found the "Luasec" project.
As mentioned in this thread "Lua with the Freebase API"; I have downloaded Luasec.
I have put the ssl.lua and the ssl folder within my lua installation the I have put the ssl.dll in the clibs folder within the lua installation.
For testing I only do a require ("ssl.https") in my Lua file but it crashes. It says:
C:\Program Files (x86)\Lua\5.1\lua.exe: error loading module 'ssl.core' from file 'C:\Program Files (x86)\Lua\5.1\clibs\ssl.dll':
%1 ist keine zulässige Win32-Anwendung. (%1 is no a valid Win32 application)
I've tested it on a Win 7 32 bit pc too and it crashes with this:
C:\Program Files\Lua\5.1\lua.exe: error loading module 'ssl.core' from file 'C:\Program Files\Lua\5.1\clibs\ssl.dll':
Das angegebene Modul wurde nicht gefunden. (The module cant be found)
Can anybody please help me getting this work?
I had this same problem on Windows 7 64 bit as well, using Alien to load a Windows DLL.
The library I was loading (i.e. the DLL) is a 64 bit DLL, but Lua for Windows is a 32 bit application.
I have a 32-bit version of the DLL that I loaded instead, and that works. See if you too can find a 32 bit version of your library.
As for your problem on 32 bit Windows, that could of course be due to other factors, though if you are using the same 64 bit DLL, I guess that won't work either.
I got this problem yesterday and solved it by downloading the source code of Luasec and built it with static library on a 32-bit windows 7 pc. You may try to build your own.
I changed some configurations in my C/C++ and Linker properties of project.
Below are what I changed:
C/C++ -> Code Generation -> Runtime Library: Multi-threaded (/MT)
Linker -> General -> Additional Library Directories: C:\OpenSSL-Win32\lib\VC\static
Linker -> Input -> Additional Dependencies: add libeay32MT.lib and ssleay32MT.lib
Or, you could download my version here if you need.

i386 exe file that refuses dosbox, on x64 windows

I am trying to make a code run on my machine (windows 7 x64), it is a fortran 90 code that needs a third-party provided i386-based dll to work.
When I tried compiling it (with latest gfortran and mingw) to a x64 target, it refused, because of the i386 dll file. Then, I tried to compile it to a i686 target, and the compilation worked without errors.
However, the output a.exe file won't run on my x64 windows (as one could expect), and when trying to run it from Dosbox (just typing "a" or "a.exe" when I reached the correct directory), I just got "this program cannot be run in DOS mode".
So my question is: is it a fail in the compiling process, or does Dosbox reject the program for some reason (the reason being possibly that the "a.exe" program needs to write to a file when executed: it is its purpose, actually!), and if it is so, what is the reason, and is there a way to ultimately see my exe file run? on my machine?
EDIT: Dosbox indeed can run a 32 bit exe file I have from another project, so it is not Dosbox being completely non-functional. However, when trying to open that exe file directly with windows 7, it says it is incompatible with x64, while for the other file (a.exe) it just says it "fails to initialize" with code "0xC000007b"...unfortunately my compiler debugging knowledge is close to zero...
Thank you very much for your help!

Running Grobid on Windows 64 bit

I am trying to execute GROBID on a 64-bit Windows.
There is no x64 bit version of the library for Windows (Atleast I could not find). It runs on 64 bit Linux with 64 bit JRE and on 32 bit Windows with 32 bit JRE. So the version of JRE is not the problem.
I understand I need to include the 64-bit Windows - libcrfpp file. However I cannot find it. Can you please let me know where can I find it or help me execute it?
However I get an errors as follows -
Error when trying to run it using a 64 bit JVM on Windows 64 -
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.grobid.core.main.GrobidParser.<clinit>(GrobidParser.java:22)
at org.pushpin.main.Main.main(Main.java:138)
Caused by: java.lang.RuntimeException: Unable to find a native CRF++ library: Folder <FOLDER>\GROBID_HOME\.\lib\win-64 does not exist
at org.grobid.core.main.LibraryLoader.load(LibraryLoader.java:21)
at org.grobid.core.impl.GrobidFactoryImpl.init(GrobidFactoryImpl.java:35)
at org.grobid.core.impl.GrobidFactoryImpl.newInstance(GrobidFactoryImpl.java:22)
at org.grobid.core.impl.GrobidFactoryImpl.instance(GrobidFactoryImpl.java:14)
at org.grobid.core.GrobidFactory.<clinit>(GrobidFactory.java:13)
... 2 more
UPDATE
Error when trying to run it using a 32 bit JVM on Windows 64 -
Caused by: java.io.IOException: Cannot run program "<project path i have removed it>\lib/pdftoxml": CreateProcess error=193, %1 is not a valid Win32 application
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
at java.lang.Runtime.exec(Runtime.java:615)
at java.lang.Runtime.exec(Runtime.java:448)
at java.lang.Runtime.exec(Runtime.java:345)
at org.grobid.core.document.Document.pdf2xml(Document.java:217)
at org.grobid.core.engines.HeaderParser.processing(HeaderParser.java:86)
It is not possible to load a 32-bit native library from a 64-bit JVM.
Using a 32 bit dll on a 64 bit machine
But you can install a 32-bit JVM on your 64-bit Windows and run a Java application which uses a 32-bit native library.
Is it possible to install both 32bit and 64bit Java on Windows 7?
How to run an API made for 32-bit on a 64-bit machine?
UPDATE:
This is a excerpt of the application launcher
private static String getLibraryFolder() {
String osPart = System.getProperty("os.name").replace(" ", "").toLowerCase().substring(0, 3);
String archPart = System.getProperty("sun.arch.data.model");
//todo: change to fetching the basic dir from GrobidProperties object
return String.format("%s/%s-%s", GrobidProperties.getInstance().getNativeLibraryPath().getAbsolutePath(),
osPart, archPart);
}
The application is checking property sun.arch.data.model to get the native library folder. If you use a 32-bit JVM in a 64-bit Windows, you get
java.home=C:\Program Files (x86)\Java\jre7
os.arch=x86
os.name=Windows 7
sun.arch.data.model=32
So executing the application with a 32-bit JRE would load the native libraries from <FOLDER>\GROBID_HOME\.\lib\win-32
UPDATE:
The error you get when using 32-bit JRE has nothing to do with JVM architecture. You should install and configure your pdf2xml correctly.
I'm writing here just to inform you that we've integrated the ported version of Wapiti for Windows 64bit.
If you are still interested to try, you can just download/update the Grobid development version from master.
The issues with pdf2xml have been solved as well as other minor bugs that emerged when testing with Windows.
Batch and service mode are both working just fine. Would be great to have more intensive testing on different Windows versions running natively.
You can follow up the progress and report eventual problems or bugs at the relative issue.

Trouble installing QT Jambi on a Windows 64 bit system

I've been trying to use QT Jambi, but I couldn't manage to install it yet. First of all, this is my system:
Windows 7 Home Premium 64 Bit
Java 6 32 bit (I often use JDownloader which is not compatible with the 64 bit version of Java)
MinGW C++ compiler that comes with Code::Blocks (which sets all required environmental variables during setup)
I also have CygWin installed, but I don't understand why it gets mentioned during the error that I get...
My first idea was to try the 32 bit version since I have 32-bit Java, so I linked the libraries in Eclipse, tried the classical beginner program found in a tutorial and I got this message:
java.lang.ExceptionInInitializerError
at com.trolltech.qt.QtJambiObject.<clinit>(Unknown Source)
Caused by: java.lang.RuntimeException: Loading library failed, progress so far:
Unpacking .jar file: 'qtjambi-win32-msvc2008-4.7.1.jar'
Checking Archive 'qtjambi-win32-msvc2008-4.7.1.jar'
- skipping because of wrong system: trying to load: 'win32', expected: 'win64'
Loading library: 'QtCore4.dll'...
- using 'java.library.path'
at com.trolltech.qt.internal.NativeLibraryManager.loadNativeLibrary(Unknown Source)
at com.trolltech.qt.internal.NativeLibraryManager.loadQtLibrary(Unknown Source)
at com.trolltech.qt.Utilities.loadQtLibrary(Unknown Source)
at com.trolltech.qt.Utilities.loadQtLibrary(Unknown Source)
at com.trolltech.qt.QtJambi_LibraryInitializer.<clinit>(Unknown Source)
... 1 more
Caused by: java.lang.RuntimeException: Library 'QtCore4.dll' was not found in 'java.library.path'=C:\Program Files\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C: \Windows;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Broadcom\Broadcom 802.11\Driver;c:\Program Files (x86)\Microsoft SQL Server\90\Tools\binn\;C:\Program Files (x86)\CodeBlocks\MinGW\bin\;C:\Program Files (x86)\QuickTime\QTSystem\;C:\cygwin\bin;C:\Program Files\Microsoft Windows Performance Toolkit\;.
at com.trolltech.qt.internal.NativeLibraryManager.loadLibrary_helper(Unknown Source)
... 6 more
Exception in thread "main"
Then since it says it expects a 64 bit system I followed the Installation Guide and tried this steps:
1) Downloaded QTJambi source package
2) Downloaded original QT source package
3) Added "C:\QTJambi\QT\qt-qt\bin" (QT source package folder) to the environment PATH variable
4) Opened Visual Studio 2005 Command Prompt
5) cd C:\QTJambi\QT\qt-qt
6) Tried: configure -platform win64-g++ -D QT_JAMBI_BUILD -no-qt3support -plugin-manifests
But it didn't work, error: invalid option win64-g++ for -platform
7) Tried configure -platform win32-g++ -D QT_JAMBI_BUILD -no-qt3support -plugin-manifests
8) Digit o for open source
9) Digit y for accepting license
But it doesn't work either, getting this error:
Running syncqt...
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LC_ALL = (unset)
LANG = "IT"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
Can't execute /cygdrive/c/QTJambi/QT/qt-qt/bin//syncqt
syncqt failed, return code 2
Anyone able to help?
Thanks in advance to anyone!
This response attempts to explain and address the original problem (i.e. how to make use of the 32bit QtJambi binary distribution on a 64bit Windows system).
skipping because of wrong system: trying to load: 'win32', expected: 'win64'
This is a message from the QtJambi initialization code that detects a mismatch between the 32/64 bit-ness of the JVM and the 32/64 bit-ness of the QtJambi implementation trying to be loaded into the JVM instance at runtime.
In your case this is due to trying to use a 64bit JVM with a 32bit version of QtJambi. This is not a possible feat. To correct the problem find and install directly the Windows 32bit JVM on your system so that you have the file "C:\Program Files (x86)\Java\jre6\bin\java.exe" (you may already have it installed, please check)
When they are both installed on a 64bit system take a look at the difference between:
C:\>"C:\Program Files (x86)\Java\jre6\bin\java.exe" -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)
C:\>"C:\Program Files\Java\jre6\bin\java.exe" -version
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
The top one is the 32bit JVM; the bottom one is the 64bit JVM.
Now try loading the QtJambi binary version you have via the 32bit JVM you have to do this explicitly as the default "java.exe" should be the 64bit one on a Windows 64bit platform:
"C:\Program Files (x86)\Java\jre6\bin\java.exe" -cp qtjambi-X.Y.Z.jar;qtjambi-win32-msvc2008-X.Y.Z.jar;myjar.jar mypackage.MyMain
You need to fixup the command line above the ClassPath (-cp) to the locations of your JARs you are attempting to run and the main().
If you have problems getting the application to start due to UnsatisfiedLinkError and you are using a msvc2008 build then try installing the "Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)" http://www.microsoft.com/download/en/details.aspx?id=5582 (NOTE: There is also a 64bit version of this as well, this link is for the 32bit version which is relevant to using 32bit QtJambi on a 32bit JVM, if you also want the 64bit version search for the same page with "(x64)" in the title instead of "(x86)" on the microsoft website).
Then retry your test.
Qt Jambi nowadays supports 64 bit compilations too, but getting proper Qt is quite a bit harder.
For MinGW there is some resources available in Internet. Maybe they can help you. Building 64-bit Qt 4.7 using MinGW-w64
Only supported (by Nokia) solution at the moment is 64 bit MSVC compilations, but AFAIK there is no such binaries distributed from Nokia because runtimes are not allowed to be freely distributed. When compiling with MSVC, correct profile for MSVC 2010 would be win32-msvc2010. List of those can be found from in mkspecs directory.
Note that you don’t usually have to specify the profile in first place; only if there is many available profiles you could use and you want to use certain one (MinGW or MSVC, for example).
64 bit compilation with MSVC works using 64 bit environment, according this page.
Using Cygwin with Qt or Qt Jambi is not really suggested; use MSYS if you want unix-like environment.

Resources