Win64 compilation - results, instructions, some errors

Forum for software developers to discuss BCI2000 software development
Locked
boulay
Posts: 382
Joined: 25 Dec 2011, 21:14

Win64 compilation - results, instructions, some errors

Post by boulay » 27 Dec 2011, 03:06

RESULTS:
VS2008 dynamic: 76 succeeded and 9 failed. All of the failed were application modules due to a 3DAPI error (posted below for clarity).
VS2008 static: I haven't done this in a while but I know I at least got the gUSBampSource module working though it had some peculiar behavior when combined with 32-bit BCPy2000.
MINGW-64 static: I was able to build most Source and SignalProcessing modules. I had the same problems with application modules as above. Another problem specific to this configuration was that building gUSBampSource generated an error (posted below for clarity).

The instructions below are prefixed with VS2008: or MINGW-64: depending on the compiler and with d: or s: whether this applies to Qt (precompiled) dynamic libraries or self-compiled static libraries. If there is no prefix, assume the directions are common to all methods. Note steps 4,5,6 are only necessary for Qt compilation.

Code: Select all

	1. Download and install your compiler
		1. VS2008: Visual Studio 2008 Standard (NOT EXPRESS), Trial version is OK.
		2. MINGW-64: TDM-GCC (aka mingw toolchain) http://tdm-gcc.tdragon.net/download .
		3. Make sure the compiler's executables are in the system path.
	2. Download and install CMake http://www.cmake.org/cmake/resources/software.html
		* Make sure its executables are in the system path
	3. Download and 'install' Qt.
		* VS2008 dynamic: http://code.google.com/p/qt-msvc-installer/downloads/list get the Win64 files.
		* MINGW-64 dynamic: http://www.drangon.org/mingw/mirror.php?num=2&fname=qt-4.6.1-x86_64-w64-mingw32-20100218.7z though I couldn't get this to work for me.
		* Either static: download the qt-everywhere-opensource zip file (not the auto-triggered exe) from http://qt.nokia.com/downloads/windows-cpp then extract it to <qtdir>
		* Make sure the <qtdir>/bin is in your system path.
	4. static: Download and install ActivePerl. Make sure its bin directory is in the system path.
	5. static: Configure Qt for compilation
		1. VS2008 static: In the file qt/mkspecs/win32-msvc2008/qmake.conf, or the corresponding file for MSVC2010, apply these changes: In QMAKE_CFLAGS_RELEASE and QMAKE_CFLAGS_DEBUG, replace the -MD and -MDd switches with -MT and -MTd, respectively.
		2. Run the compiler command prompt and cd to the <qtdir>
		3. Paste the following line into the command prompt and run it. Choose open source and accept the license to continue.
			* configure -static -no-sql-sqlite -no-qt3support -fast -qt-zlib -qt-libpng -qt-libmng -no-libtiff -no-libjpeg -no-phonon -no-webkit -no-scripttools -no-style-plastique -no-style-motif -no-style-cde
	6. static: Build Qt
		* (Still in compiler command prompt)
		* Run (VS2008:)nmake or (MINGW-64:)mingw32-make in each of the following directories, in order (they take some time)
			1. qt/src/tools
			2. qt/src/corelib
			3. qt/src/gui
			4. qt/src/winmain
			5. qt/src/opengl
	7. Tell BCI2000 to use standalone Qt
		1. Edit BCI2000/build/cmake/FindQt.cmake. There, in line 10, replace SET(USE_STD_QT FALSE) with SET(USE_STD_QT TRUE)
		2. MINGW-64: Edit BCI2000/build/cmake/BuildConfigurations.cmake. There, after line 21, add SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
	8. Create the make files for BCI2000
		1. VS2008: BCI2000/build/Make VS2008 Win64 Project Files.bat
		2. MINGW-64: BCI2000/build/Make MinGW Makefiles.bat
	9. Build BCI2000
		1. VS2008:
			1. Open BCI2000/build/BCI2000.sln
			2. Change the solution configuration from 'debug' to 'release' in the drop-down menu.
			3. Build solution. You will get a ton of warnings about type conversions. Be patient.
		2. MingW-64:
			1. In the command prompt, change to the BCI2000/build directory
			2. run mingw32-make
Last edited by boulay on 17 Jan 2012, 02:41, edited 1 time in total.

boulay
Posts: 382
Joined: 25 Dec 2011, 21:14

Re: g.USBampSource in Win64 environment?

Post by boulay » 28 Dec 2011, 01:48

I know Windows 7 64-bit is not officially supported, but I thought I would put this information up here so we could commiserate.

Almost all application modules generated the following error when using MINGW-64

Code: Select all

[ 42%] Building CXX object frameworks/AppModuleLib/CMakeFiles/BCI2000FrameworkAppModule.dir/E_/Tools/BCI2000/src/extlib/3DAPI/buffers.cpp.obj
E:\Tools\BCI2000\src\extlib\3DAPI\buffers.cpp: In static member function 'static GLuint buffers::loadTexture(const string&)':
E:\Tools\BCI2000\src\extlib\3DAPI\buffers.cpp:135:127: error: 'gluBuild2DMipmaps' was not declared in this scope
mingw32-make[2]: *** [frameworks/AppModuleLib/CMakeFiles/BCI2000FrameworkAppModule.dir/E_/Tools/BCI2000/src/extlib/3DAPI/buffers.cpp.obj] Error 1
mingw32-make[1]: *** [frameworks/AppModuleLib/CMakeFiles/BCI2000FrameworkAppModule.dir/all] Error 2
mingw32-make: *** [all] Error 2
Or when using VS2008:

Code: Select all

LINK : fatal error LNK1181: cannot open input file '..\..\..\..\frameworks\AppModuleLib\Release\BCI2000FrameworkAppModule.lib'
I can get more detailed info about the 3DAPI errors when using VS2008 (I don't know how to do this with MINGW-64):

Code: Select all

	 	
Compiling...
sphere.cpp
..\..\..\src\extlib\3DAPI\sphere.cpp(60) : error C2065: 'GLUquadricObj' : undeclared identifier
..\..\..\src\extlib\3DAPI\sphere.cpp(60) : error C2065: 'q' : undeclared identifier
..\..\..\src\extlib\3DAPI\sphere.cpp(60) : error C3861: 'gluNewQuadric': identifier not found
..\..\..\src\extlib\3DAPI\sphere.cpp(61) : error C2065: 'q' : undeclared identifier
..\..\..\src\extlib\3DAPI\sphere.cpp(61) : error C3861: 'gluQuadricNormals': identifier not found
..\..\..\src\extlib\3DAPI\sphere.cpp(62) : error C2065: 'q' : undeclared identifier
..\..\..\src\extlib\3DAPI\sphere.cpp(62) : error C3861: 'gluQuadricTexture': identifier not found
..\..\..\src\extlib\3DAPI\sphere.cpp(63) : error C2065: 'q' : undeclared identifier
..\..\..\src\extlib\3DAPI\sphere.cpp(63) : error C3861: 'gluSphere': identifier not found
..\..\..\src\extlib\3DAPI\sphere.cpp(64) : error C2065: 'q' : undeclared identifier
..\..\..\src\extlib\3DAPI\sphere.cpp(64) : error C3861: 'gluDeleteQuadric': identifier not found
Load3DS.cpp
..\..\..\src\extlib\3DAPI\Load3DS.cpp(139) : warning C4267: '=' : conversion from 'size_t' to 'unsigned int', possible loss of data
[...snip more conversion warnings...]
..\..\..\src\extlib\3DAPI\Load3DS.cpp(798) : error C3861: 'gluBuild2DMipmaps': identifier not found
cameraNlight.cpp
..\..\..\src\extlib\3DAPI\cameraNlight.cpp(126) : error C3861: 'gluLookAt': identifier not found
buffers.cpp
..\..\..\src\extlib\3DAPI\buffers.cpp(135) : error C3861: 'gluBuild2DMipmaps': identifier not found

boulay
Posts: 382
Joined: 25 Dec 2011, 21:14

Re: Win64 compilation - results, instructions, some errors

Post by boulay » 17 Jan 2012, 03:00

Finally, some information about using BCPy2000 on Windows 7 64-bit environments.

The Full-monty release works out of the box. Nicely done to those involved.

However, the Full-monty release would not work (for me) with the distributed SignalGenerator.exe (32-bit) even though that module worked in a normal BCI2000 install.

I also tried a gUSBampSource.exe module that I had compiled previously (see VS2008 static above). This module worked in a normal BCI2000 install. It had some strange behavior in BCPy2000. I made some test variables in BciSignalProcessing.py and BciApplication.py that changed their values as the hooks were called. IF I had misconfigured something in the application module such that Preflight would fail, I could inspect these test variables to confirm that BciSignalProcessing executed and some of BciApplication executed and I could visualize the signals from the source module. If I did not have any misconfigurations and preflight was successful, then gUSBampSource.exe would crash.

Using the 64-bit gUSBampSource.exe and SignalGenerator.exe modules that I compiled with VS2008 and pre-compiled dynamic Qt library (see above), I no longer had these problems. So my problem is now solved (I hope, I haven't tested much).

While trying to get BCPy2000 to work with the static 64-bit modules I discovered some other interesting bits for people using Windows 7 64-bit but I will put this information in another post because it has nothing to do with compiling.

mellinger
Posts: 1065
Joined: 12 Feb 2003, 11:06

Re: Win64 compilation - results, instructions, some errors

Post by mellinger » 17 Jan 2012, 09:01

Thank you for posting updated build instructions for Win64. You are welcome to post these on the wiki once the following issues have been addressed:
* MINGW-64 dynamic: http://www.drangon.org/mingw/mirror.php ... 0100218.7z though I couldn't get this to work for me.
Please don't list this if it didn't work. Also, further down, you still refer to MinGW64. Is this the static version? What are the "install" instructions for MinGW64-static?
Download and install ActivePerl
At Nokia, they say that compiling Qt does not require Perl, provided that the "official" source code distribution is used rather than checking out directly from the repository (http://labs.qt.nokia.com/2011/12/15/qt-4-8-0-released/, search for "perl"). Is it not possible to use the official SDK when compiling for Win64?

Best regards,
Juergen

mellinger
Posts: 1065
Joined: 12 Feb 2003, 11:06

Re: Win64 compilation - results, instructions, some errors

Post by mellinger » 17 Jan 2012, 09:16

VS2008 dynamic: 76 succeeded and 9 failed. All of the failed were application modules due to a 3DAPI error (posted below for clarity).
The 3DAPI errors were not present when building against 4.7.x versions of Qt. They should be fixed by now (http://www.bci2000.org/tracproj/changeset/3734).

mellinger
Posts: 1065
Joined: 12 Feb 2003, 11:06

Re: Win64 compilation - results, instructions, some errors

Post by mellinger » 17 Jan 2012, 09:23

The Full-monty release works out of the box. Nicely done to those involved.

However, the Full-monty release would not work (for me) with the distributed SignalGenerator.exe (32-bit) even though that module worked in a normal BCI2000 install.
Are you saying that it works, or that it doesn't? Are you referring to the SignalGenerator.exe that is distributed with the Full-monty release? In what way is it misbehaving?
then gUSBampSource.exe would crash.
What kind of crash did you observe? Was there a message in the Operator's log window, or a standard Windows dialog "application stopped functioning"? Do you have both the 32bit and 64bit g.USBamp drivers installed on your machine?

Thanks,
Juergen

boulay
Posts: 382
Joined: 25 Dec 2011, 21:14

Re: Win64 compilation - results, instructions, some errors

Post by boulay » 18 Jan 2012, 00:08

Hi Juergen,
Thanks for your quick replies.
mellinger wrote:
The Full-monty release works out of the box. Nicely done to those involved.
However, the Full-monty release would not work (for me) with the distributed SignalGenerator.exe (32-bit) even though that module worked in a normal BCI2000 install.
Are you saying that it works, or that it doesn't? Are you referring to the SignalGenerator.exe that is distributed with the Full-monty release? In what way is it misbehaving?
Sorry for not being clearer. I will explain how to reproduce the error and maybe it will make more sense.
I downloaded and extracted BCPy2000-FullMonty254-20110710 to a directory called <dir>.
Calling <dir>/BCI2000/batch/PythonDemo3_Template.bat works well.
I then copied SignalGenerator.exe from BCI2000Setup.exe to <dir>/BCI2000/prog/SignalGenerator_32.exe . This exe is dated 15/10/2011
I copied the 64-bit version of SignalGenerator.exe that I compiled to <dir>/BCI2000/prog/SignalGenerator_64.exe
I modified <dir>/BCI2000/batch/PythonDemo3_Template.bat to use SignalGenerator_64.exe instead of PythonSource. The program executes normally.
If I modify the batch file to use SignalGenerator_32 instead, then it does not work. Set Config never proceeds to start. It seems the signal processing module and the application module are both Waiting for configuration...
The Connection Info dialog box shows Source's Messages received incrementing but SignalProcessing stopped at 19 and Application stopped at 29.
I then specified .py files to be launched by PythonSignalProcessing and PythonApplication in which I changed the value of a global variable within each hook. Examining the global in the python console showed that these hooks were never called. Note that this same SignalGenerator.exe module works fine when combined with non-BCPY2000 modules.

I don't know why 32-bit BCPy2000 processing and application modules do not want to play with 32-bit SignalGenerator.exe but they will play with 64-bit SignalGenerator.exe.
mellinger wrote:
then gUSBampSource.exe would crash.
What kind of crash did you observe? Was there a message in the Operator's log window, or a standard Windows dialog "application stopped functioning"? Do you have both the 32bit and 64bit g.USBamp drivers installed on your machine?
It would take me a while to reproduce the conditions to generate this error. I can tell you how I generated the error but I can't give you any details about the error itself.
[If I go chronologically it will be confusing so I will fudge the timeline a little]
My problem originated because gUSBampSource.exe (32) and gUSBampgetinfo.exe (32) refused to run on my system. At this point, I only had the 64-bit driver and 64-bit dll.
I then copied the 32-bit dll from a colleague's system to my computer. I know the gUSBamp modules were finding it because the applications could now run. However, gUSBampgetinfo could not find any filters. I don't know if this dll matches the drivers I have installed. Is there a way to find out?
I then compiled, with some effort, gUSBampSource (64) and gUSBampgetinfo (64) using static Qt libraries. These newly compiled programs seemed to run (getinfo was returning the correct filter banks, the signal visualization matched my input when using gUSBampSource with non BCPy2000 modules). When I combined gUSBampSource with BCPy2000 modules and one of these modules had a bug such that Set Config would fail (I honestly can't remember if it was Preflight or Initialize), then I could still visualize the signal sources. If I fixed this bug then tried again, gUSBampSource.exe would crash. Again, sorry I can't provide details about the error without considerable effort.
If I replace the gUSBampSource.exe module with the one I recently compiled against the dynamic Qt library then I no longer receive the error.

My problems are now solved so I am not too intent on hunting down the source of the bug, especially since Jeremy is updating BCPy2000 and Griffin is updating the gUSBampSource modules. I would, eventually, like to get this to work in a more portable fashion which would require compiling against the static Qt library. You asked above if it were not possible to compile Qt statically on Win64 using the SDK. I know that it previously was not possible because there are many guides online describing how to perform this task and they all use the source. However, I think that Qt 4.8 has better support for Win64 so it might be possible now. I only downloaded the SDK once, when I was even more naive than I am now, and was unable to figure out how to use it. This might be worth another try for the benefit of others that might want 64-bit statically-linked modules.

boulay
Posts: 382
Joined: 25 Dec 2011, 21:14

Re: Win64 compilation - results, instructions, some errors

Post by boulay » 18 Jan 2012, 01:02

As of this writing there is no SDK for 4.8.0
It is possible to download the Qt library specific to your compiler and these come with a Qt command-prompt inside of which you could configure without PERL, however these command prompts are configured to use the x86 compiler. I think the steps involved in getting the Qt command-prompt to work with the 64-bit compiler are much more difficult than installing ActivePerl.

I am editing the directions to be a little clearer while I am making another attempt at the static compilation using the updated source. I will update the OP when done.

boulay
Posts: 382
Joined: 25 Dec 2011, 21:14

Re: Win64 compilation - results, instructions, some errors

Post by boulay » 18 Jan 2012, 05:41

Updated results:
VS2008 dynamic: 82 succeeded and 2 failed (NewBCI2000 filter)
VS2008 static: 45 succeeded and 40 failed. Only 4 of the successful are actual executables.
MINGW-64 static: Almost everything compiled except for g.tec products, which I need. So for now I will continue to use the one I got from VS2008 dynamically linked to the Qt libraries. ( Also, FieldTrip did not compile as well as several of the contrib SignalSource modules). I don't know whether or not these compiled modules are functional. For example, I received the following error when trying to run SignalGenerator.exe "SignalGeneratorADC::Preflight: Parameter "SourceChGain" does not exist."

VS2008 static and MINGW-64 static errors at the bottom of this post.

The instructions below should produce a successful build with VS2008 and dynamic linking only. The directions for the static linking and for using MINGW-64 are there to help guide others to fix these problems if they are so inclined. The instructions are prefixed with VS2008: or MINGW-64: depending on the compiler and VS2008 might be followed with d: or s: whether this applies to Qt precompiled dynamic libraries or self-compiled static libraries. If there is no prefix, assume the directions are common to all methods. Note steps 4,5,6 are only necessary for Qt compilation and therefore note required by VS2008d.

Code: Select all

	1. Download and install your compiler
		* VS2008: Visual Studio 2008 Standard (NOT EXPRESS, NOT 2010). Trial version is OK.
		* MINGW-64: TDM-GCC (aka mingw toolchain) http://tdm-gcc.tdragon.net/download
                      * Make sure the compiler's executables are in the system path.
	2. Download and install CMake http://www.cmake.org/cmake/resources/software.html
		* Make sure its executables are in the system path
	3. Download and 'install' Qt.
		* VS2008 dynamic: http://code.google.com/p/qt-msvc-installer/downloads/list get the Win64 files. After installation skip to step 7.
		* VS2008s: http://qt.nokia.com/downloads/windows-cpp-vs2008
		* MINGW-64: http://qt.nokia.com/downloads/windows-cpp
		* (are the compiler-specific installers better or worse than the pure source-code?)
		* Make sure the <qtdir>/bin is in your system path.
	4. MINGW-64 and VS2008s: Download and install ActivePerl. Make sure its bin directory is in the system path.
	5. MINGW-64 and VS2008s: Configure Qt for compilation
		1.  VS2008 static: In the file qt/mkspecs/win32-msvc2008/qmake.conf, or the corresponding file for MSVC2010, apply these changes: In QMAKE_CFLAGS_RELEASE and QMAKE_CFLAGS_DEBUG, replace the -MD and -MDd switches with -MT and -MTd, respectively.
		2. Run the compiler command prompt (e.g., Visual Studio 2008 x64 Win64 Command Prompt) and cd to the <qtdir>
		3. Paste the following line into the command prompt and run it.
			* configure -static -no-sql-sqlite -no-qt3support -qt-zlib -qt-libpng -qt-libmng -no-libtiff -no-libjpeg -no-phonon -no-webkit -no-scripttools -no-style-plastique -no-style-motif -no-style-cde
		4. Choose open source and accept the license to continue.
	6. MINGW-64 and VS2008s: Build Qt
		* (Still in compiler command prompt)
		* Run (VS2008s:)nmake or (MINGW-64:)mingw32-make in each of the following directories, in order (they take some time)
			1. qt/src/tools (MINGW-64: not necessary if using compiler-specific download)
			2. qt/src/corelib
			3. qt/src/gui
			4. qt/src/winmain
			5. qt/src/opengl
		* If you run into any errors while making the above directories try to run the make command at the Qt root (much slower).
		* Run (VS2008s:)nmake clean or (MINGW-64:)mingw32-make clean
	7. Tell BCI2000 to use standalone Qt
		1. Edit BCI2000/build/cmake/FindQt.cmake. There, in line 10, replace SET(USE_STD_QT FALSE) with SET(USE_STD_QT TRUE)
		2. MINGW-64: Edit BCI2000/build/cmake/BuildConfigurations.cmake. There, after line 21, add SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
	8. Create the make files for BCI2000
		1. VS2008: BCI2000/build/Make VS2008 Win64 Project Files.bat
		2. MINGW-64: BCI2000/build/Make MinGW Makefiles.bat (Try using the cmake gui instead ?)
	9. Build BCI2000
		1. VS2008:
			1. Open BCI2000/build/BCI2000.sln
			2. Change the solution configuration from 'debug' to 'release' in the drop-down menu.
			3. Build solution. You will get a ton of warnings about type conversions. Be patient.
		2. MingW-64:
			1. In the command prompt, change to the BCI2000/build directory
			2. run mingw32-make
				1. If this fails on a given package, you can change into individual directories to build certain packages
This is the VS2008s error

Code: Select all

"1>QtGui.lib(qbackingstore.obj) : error LNK2019: unresolved external symbol __imp_fprintf referenced in function "void __cdecl qt_flush(class QWidget *,class QRegion const &,class QWindowSurface *,class QWidget *,class QPoint const &)" (?qt_flush@@YAXPEAVQWidget@@AEBVQRegion@@PEAVQWindowSurface@@0AEBVQPoint@@@Z)"
This is the mingw32-64 error for gUSBamp

Code: Select all

Linking CXX executable E:\Tools\BCI2000\prog\gUSBampSource.exe
c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.6.1/../../../../x86_64-w64-mingw32/bin/ld.exe: skipping incompatible E:\Tools\BCI2000\build\..\src\extlib\gtec\gUSBamp\mingw\libgUSBamp.a when searching for -lgUSBamp
c:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.6.1/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lgUSBamp
collect2: ld returned 1 exit status
mingw32-make[2]: *** [E:/Tools/BCI2000/prog/gUSBampSource.exe] Error 1
mingw32-make[1]: *** [core/SignalSource/g.USBamp/CMakeFiles/gUSBampSource.dir/all] Error 2
mingw32-make: *** [all] Error 2

mellinger
Posts: 1065
Joined: 12 Feb 2003, 11:06

Re: Win64 compilation - results, instructions, some errors

Post by mellinger » 18 Jan 2012, 10:09

I don't know why 32-bit BCPy2000 processing and application modules do not want to play with 32-bit SignalGenerator.exe but they will play with 64-bit SignalGenerator.exe.
The explanation to this is that
* BCPy2000 modules were compiled from an earlier BCI2000 source than the last binary distribution,
* in the last binary distribution, a bug was present that would lead to incompatibility with older modules,
* that bug has been fixed on SVN, and newer modules work with both old ones and those with the bug.
This is the VS2008s error
Code:
"1>QtGui.lib(qbackingstore.obj) : error LNK2019: unresolved external symbol __imp_fprintf referenced in function "void __cdecl qt_flush(class QWidget *,class QRegion const &,class QWindowSurface *,class QWidget *,class QPoint const &)" (?qt_flush@@YAXPEAVQWidget@@AEBVQRegion@@PEAVQWindowSurface@@0AEBVQPoint@@@Z)"
This means that the compiled QtGui.lib expects to be linked dynamically against the MSVC Runtimes, rather than statically. It appears to be a bug somewhere in Qt but I can't tell whether that occurs in configuration or compilation stage. I don't think it is advisable to download Qt from their source repository because it's impossible for them to catch this kind of bug except in official source code releases.
This is the mingw32-64 error for gUSBamp
There is no 64bit g.USBamp import lib present for MinGW. You are welcome to contribute one. Note that MinGW 64 is not suggested on the original 64bit howto page on the wiki.
As of this writing there is no SDK for 4.8.0
So I think one should use the latest 4.7.x SDK rather than 4.8.

Thanks,
Juergen

boulay
Posts: 382
Joined: 25 Dec 2011, 21:14

Re: Win64 compilation - results, instructions, some errors

Post by boulay » 18 Jan 2012, 20:43

mellinger wrote:
This is the VS2008s error
Code:
"1>QtGui.lib(qbackingstore.obj) : error LNK2019: unresolved external symbol __imp_fprintf referenced in function "void __cdecl qt_flush(class QWidget *,class QRegion const &,class QWindowSurface *,class QWidget *,class QPoint const &)" (?qt_flush@@YAXPEAVQWidget@@AEBVQRegion@@PEAVQWindowSurface@@0AEBVQPoint@@@Z)"
This means that the compiled QtGui.lib expects to be linked dynamically against the MSVC Runtimes, rather than statically. It appears to be a bug somewhere in Qt but I can't tell whether that occurs in configuration or compilation stage. I don't think it is advisable to download Qt from their source repository because it's impossible for them to catch this kind of bug except in official source code releases.
This error was generated using official libraries (with an installer and everything) downloaded from http://qt.nokia.com/downloads . 4.8 is now the official library release, even if the SDK is a little bit behind.

I know that what I am doing is not supported. I just hope that my experiences might be beneficial to others.

But while I have your attention, perhaps the question I should have asked first is: Is it possible to install 32-bit g.USBamp drivers on a Win64 system? The installer for the 32-bit drivers that I have (3.09) completes but when I try to set the driver manually for the unknown device, then select USB device, g.tec is not in the list of device manufacturers. I never tried the 'have disk' option and selecting the driver in C:\Program Files (x86)\gtec because I was stuck on the idea that "have disk' meant the driver CD which had an installer but no driver files. If you've seen the 1-page driver installation manual then you'll know that the official documentation might help someone who has never seen a computer but it doesn't cover this particular scenario.

If I uninstall this driver then install the 64-bit drivers (3.10), then g.tec does appear and I was able to manually set the driver. At this point I assumed that it was a 64-bit vs 32-bit problem and started on my quest to get a 64-bit gUSBampSource.exe module to work with the python modules. Maybe the issue all along was simply that my 32-bit drivers are too old or that 32-bit drivers can only be installed on a 64-bit system by using the 'have disk' option and pointing it to the install directory (not the disk). I know that this is not a g.tec support forum so I will contact them to try and get an official answer to this as well as more up-to-date 32-bit drivers.

mellinger
Posts: 1065
Joined: 12 Feb 2003, 11:06

Re: Win64 compilation - results, instructions, some errors

Post by mellinger » 19 Jan 2012, 09:33

This error was generated using official libraries (with an installer and everything) downloaded from http://qt.nokia.com/downloads . 4.8 is now the official library release, even if the SDK is a little bit behind.
So if I understand you right, you didn't compile these Qt libs yourself. When Qt is just configured to be compiled "statically", this means that only Qt itself will be compiled into static libraries, but the final application will still require _dynamic_ linking against MSVC runtimes. In order to _link_ statically against MSVC runtimes, all sources need to be _compiled_ with -MT -MTd rather than -MD -MDd compiler switches. There is no clear separation between compile and link stages in MSVC, unfortunately. Due to that, you cannot link BCI2000 statically against the officially distributed "static" Qt libraries.
Is it possible to install 32-bit g.USBamp drivers on a Win64 system?
Yes, this should be possible AFAIK, in the way you suggest. I'll ask Adam for a comment, he knows all about 32bit gtec drivers on 64bit systems.

griffin.milsap
Posts: 58
Joined: 08 Jun 2009, 12:42

Re: Win64 compilation - results, instructions, some errors

Post by griffin.milsap » 24 Jan 2012, 15:02

Is it possible to install 32-bit g.USBamp drivers on a Win64 system?
Yes, this should be possible AFAIK, in the way you suggest. I'll ask Adam for a comment, he knows all about 32bit gtec drivers on 64bit systems.
I've had nothing but pain and heartache trying to reverse engineer 32 bit drivers to work on 64 bit Windows.

The way I always did it with the gUSBamp was to install the 64 bit drivers. These drivers are compatible with a 32 bit version of the gUSBamp module provided you use the 32 bit dll (which is NOT the one that the driver install program will put in your system path). You'll need to find the 32 bit dll and place it in the prog directory with your binary in order to accomplish this.

-Griff

Locked

Who is online

Users browsing this forum: No registered users and 2 guests