Visual Studio 2010, PCL, Qt and 32-bit and 64-bit: How? - windows

PCL 1.6 (Point Cloud Library) requires a stack of third-party libraries, including Qt. For this, they have individual installers for their libraries and Qt 4.8.0 for both Windows 32-bit and 64-bit support (yes, I am attempting to avoid building all of these from source). I require both 32- and 64-bit, separately. It looks like the 32-bit and 64-bit Qt installers write to the same installation folder and I fear that one will simply overwrite the other. Can I simply redirect the install location, say, Qt\4.8.0_64\ and Qt\4.8.0_32\ to differentiate the installs? Will this wreak havoc with paths and registry entries for PCL and my builds?

Yes you can. I have QT 4.8 and 5.0.2 on my machine. The environment variable QTDIR points to the ne you want. If you use Visual Studio and the QT addin you can have multiple QT version changeable by the QT options dialog.

Just remember to save this path in "environment variable". and also be careful when you build your project with CMake. Cmake might not find the new path, and you have to change it manually in cmake gui.

Related

using Qt 5.0 with Qt Creator and vs2010 compiler

I recently decided to upgrade from Qt 4.X to 5, though now it has only vs2010 supported. Whenever I start Qt Creator I get that there isn't any compiler (and there are no options in the settings to set one).
Question:
How do I download the vs2010 compiler? Do I have to download vs2010 itself? Will I get a debugger as well?
I have tried this suggestion, but Qt didn't pick up the compiler: Using Visual Studio as a Compiler for QT Creator
Sorry if this question have been asked before, but I have been unable to find a source that explains what I should do.
Seems like you didn't install MSVC yet. Get it from Microsoft website.
Than download sources from Nokia. Unpack them to a new folder e.g C:\QtSources and compile them with MSVC. This instructions are working just fine.
Finally add them to Qt Creator in
Tools -> Options -> Building -> Qt Versions
by poiting to your new qmake executable in
C:\QtSources\bin\qmake.exe
Hope Qt 5 will work with free Express Edition of MSVC.
You shouldn't need to re-compile Qt, as the SDK version is built with msvc2010 32-bit. For debugging, you may need to download the Windows SDK 8. Qt Creator may auto-detect your compiler and debugger, but if not, proceed as follows:
Under Options/Build & Run/Qt Versions, point to qmake.exe
Under Options/Build & Run/Kits, set "Qt Version" to the one you just created, and set your compiler and debugger
The compiler should be auto-detected if it's on your system.
The debugger is something like C:\Program Files\Windows Kits\8.0\Debuggers\x86\cdb.exe.
Good luck!

dll Dependency unwanted with visual studio 2010

I am using visual studio 2010.
Before starting my project, I installed cuda SDK 4.2.
After that, I installed opencv 2.4.2. In my project, I'm using only opencv and it works correctly. However, when I try to run my program on another computer it tells me that cuda dll (like cudart32_42_9.dll, npp32_42_9.dll and nvcuda.dll) are needed. I don't use at all cuda and do no reference in my project property to cuda. I would like to know how to remove those dependency. I don't understand why visual studio add dll I don't use.
The pre-built OpenCV 2.2 onwards, comes with 2 versions of the binaries (dlls).
The dlls in the \build\gpu directory are the superset and are built with CUDA support. Therefore, to use them you require the CUDA Runtime dlls (cudart, npp etc). These binaries are required if you want to use the GPU functionality of OpenCV. These may also be used to check if you have a GPU present in your system or not.
The other version of dlls which are present in the x86 or x64 folder in the build directory of OpenCV, are built without CUDA support (although a gpu dll is also present in that directory). You don't need cuda dlls to use these binaries.
Both of these versions are built with Intel Thread Building Blocks support, and so require tbb_debug.dll and tbb.dll for Debug and Release configurations respectively. So if you use the CPU functions of OpenCV, they will be TBB Accelerated.

What are the different platforms/languages in which an app can be compiled and run on Windows without any prerequisites?

What are the different platforms/languages in which an app can be compiled and run on Windows without any prerequisites? I know of .NET but it requires the specific version of .NET to be present in the Windows installation.
C and C++, but Visual Studio defaults to dynamically linked library. Change the default to static and you will be fine.
That being said, ther are no compilers that come with windows. You must install a compiler to build the a program that will run everywhere after that. There are free version of the compiler in the Platform SDK and in mingw (Cygwin requires a dll).
If you are using Visual C++ as language and development tool, you may switch to Statically bound DLLs, which would produce larger binaries, but would run without any runtime-prerequisites. Visual C++ Runtimes are easily installable, can be distributed, or users may be asked to install them directly. If users are using Windows Update, they would anyhow get the latest VC runtimes.

How to make VS2010 C++ see the windows 7 64bit SDK?

Been trying for 2 hours now, and theres no luck. I wanna make it so I got templets for a win64 app (Not .net) but I can't find where to add platforms. Please help?
There is no "Win64" API. There are just 32-bit Win32 apps and 64-bit Win32 apps, and the only difference is a compiler/linker option which compiler/linker are used (different directory).
The Win32 templates work just fine for 64-bit development.
While (much) earlier versions of Visual C++ shipped with a private copy of SDK headers, VS2010 installs a version of the Windows SDK and uses an environment variable to find SDK headers during build. So installing a new SDK, as long as it updates your environment variables, is automatically found by Visual C++ projects at build-time. (With the old Visual C++ versions, the SDK installer was supposed to edit the tool paths in the Visual Studio section of the registry, which could occasionally fail)

Installing Qt4 on Windows - do I need to fully install MinGW or just have local copies

That is, can I get away with DLLs in the install directory or does the installer need to ensure that MingW is fully installed?
If you install the Qt SDK, it will actually install its own MinGW tree.
This does not directly answer your question, but generally speaking, to ensure I have all the right dependencies when creating an installer, I do the following:
Use Depends, a Microsoft tool that shows what DLLs a Windows executable (.exe or another .dll) depends on. This will not show dynamically loaded DLLs though, such as QT plugins. I believe Depends is part of the Platform SDK (it used to be, anyway), which you should be able to download. See here for example.
Use a virtualization tool (like VirtualBox or VMWare) to install a fresh copy of Windows and your application. If it complains of missing DLLs on startup, you missed something in the install package.
You should be aware of any dependencies on the Visual C++ run-time. There are many different versions out there, and if your app depends on them, you need to install the correct version to the Windows\WinSxS directory. Microsoft provides a redistributable for each version of Visual C++ (including the express edition, which you can get for free). I only mention this because I noticed when installing Qt SDK that the VC++ redistributable was getting installed, so the Qt DLLs may have a dependency on the VC++ run-time.

Resources