Python source compile in windows - c++

By default Python 3.3 installers are built with Visual studio 2010.
I have visual studio 2013 and I want to generate the python33.dll from visual studio 2013.
When i link my application with dll generated from visual studio 2013 then it is getting crash in "Py_Initialize" function but when i link my application with dll generated from visual studio 2010 then everything works fine.
I have tried to build from source with VS2013. Going into "PCBuild" folder and try to build Python33.dll from .sln file but application is getting crashed.
How to make application run without crash with visual studio 2013 dll ?
Is there any steps to compile the Python source code in MinGW in windows ?
Thanks in Advance

Related

Dll built with visual studio 2019 with v141_xp tool chain fails to load on xp when loaded from visual studio 2010 built exe

Problem
I have an exe that was built with Visual Studio 2010 that I cannot change.
I have a DLL that I do control and would like to upgrade the tool chain as much as I can while maintaining Windows XP compatibility. It looks like the proper solution is to build the dll with the platform toolset v141_xp with Visual Studio 2019.
With these build settings, the loadlibrary call fails with error 998 on Windows XP, it does not fail on Windows 10 and works fine.
How do I load a dll built with platform toolset v141_xp from an app built with Visual Studio 2010 successfully?
What I have Tried
When I build a skeleton test program that just loads the dll, if I build it with Visual Studio 2010, same result, 998 error on Windows XP and a working version on Windows 10.
When I build an empty MFC DLL with the project template provided by Visual Studio, I get the same result as the dll I am trying to load with my test program.
The most interesting thing is that if I build this test program with Visual Studio 2019 with toolset v141_xp the test program operates correctly on both Windows XP and Windows 10. So I know that the dll is compatible with XP with those build settings.

XLCALL.LIB for Visual Studio 2013

We recently migrated to Visual Studio 2013 from VS2010. One of the project generates .xll using XLCALL32.lib and XLCALL dll. Now after migration to Visual Studio 2013, I am getting an error
lnk2026 module unsafe for safeseh image
There are some solutions available of disbaling SAFESEH from here:
module unsafe for SAFESEH image C++
But following this solution, Excel throws exception and crashes, while same code works fine when build on Visual Studio 2010.
I am wondering if XLCALL32.LIB is separately available for VC120 build tools.

C++ : Installing cvBlobLib library for Visual Studio 2015

I've been looking all over the web for a proper code for that library but whenever i try to build it using CMake 3.4.2 it gives me errors and when i try to build the resulting visual studio project (using Visual Studio 2015) it gives me errors as well and doesn't build successfully.
Is there any way to properly install this library and use it in Visual Studio 2015?
Thanks!
EDIT:
Screen shot of the error i get when pressing on "Generate":

MSVCP120d.dll missing

Every time I want to compile my Visual Studio project I get the message that MSVCP120d.dll is missing. Google can't help me. I already installed some redistributables but they didn't help. I also found this:
Msvcp120d.dll Debug version of C++ runtime. No redistribution
allowed.
http://msdn.microsoft.com/en-us/library/windows/hardware/dn448963(v=vs.85).aspx
From the comments, the problem was caused by using dlls that were built with Visual Studio 2013 in a project compiled with Visual Studio 2012. The reason for this was a third party library named the folders containing the dlls vc11, vc12. One has to be careful with any system that uses the compiler version (less than 4 digits) since this does not match the version of Visual Studio (except for Visual Studio 2010).
vc8 = Visual Studio 2005
vc9 = Visual Studio 2008
vc10 = Visual Studio 2010
vc11 = Visual Studio 2012
vc12 = Visual Studio 2013
vc14 = Visual Studio 2015
vc15 = Visual Studio 2017
vc16 = Visual Studio 2019
The Microsoft C++ runtime dlls use a 2 or 3 digit code also based on the compiler version not the version of Visual Studio.
MSVCP80.DLL is from Visual Studio 2005
MSVCP90.DLL is from Visual Studio 2008
MSVCP100.DLL is from Visual Studio 2010
MSVCP110.DLL is from Visual Studio 2012
MSVCP120.DLL is from Visual Studio 2013
MSVCP140.DLL is from Visual Studio 2015, 2017 and 2019
There is binary compatibility between Visual Studio 2015, 2017 and 2019.
I have found myself wasting time searching for a solution on this, and i suspect doing it again in future. So here's a note to myself and others who might find this useful.
If MSVCP120.DLL is missing, that means you have not installed Visual C++ Redistributable Packages for Visual Studio 2013 (x86 and x64). Install that, restart and you should find this file in c:\Windows\System32 .
Now if MSVCP120D.DLL is missing, this means that the application you are trying to run is built in Debug mode. As OP has mentioned, the debug version of the runtime is NOT distributable.
So what do we do?
Well, there is one option that I know of: Go to your Project's Debug configuration > C/C++ > Code Generation > Runtime Library and select Multi-threaded Debug (/MTd). This will statically link MSVCP120D.dll into your executable.
There is also a quick-fix if you just want to get something up quickly: Copy the MSVCP120D.DLL from sys32 (mine is C:\Windows\System32) folder. You may also need MSVCR120D.DLL.
Addendum to the quick fix: To reduce guesswork, you can use dependency walker. Open your application with dependency walker, and you'll see what dll files are needed.
For example, my recent application was built in Visual Studio 2015 (Windows 10 64-bit machine) and I am targeting it to a 32-bit Windows XP machine. Using dependency walker, my application (see screenshot) needs the following files:
opencv_*.dll <-- my own dll files (might also have dependency)
msvcp140d.dll <-- SysWOW64\msvcp140d.dll
kernel32.dll <-- SysWOW64\kernel32.dll
vcruntime140d.dll <-- SysWOW64\vcruntime140d.dll
ucrtbased.dll <-- SysWOW64\ucrtbased.dll
Aside from the opencv* files that I have built, I would also need to copy the system files from C:\Windows\SysWow64 (System32 for 32-bit).
You're welcome. :-)
I have the same problem with you when I implement OpenCV 2.4.11 on VS 2015.
I tried to solve this problem by three methods one by one but they didn't work:
download MSVCP120.DLL online and add it to windows path and OpenCV bin file path
install Visual C++ Redistributable Packages for Visual Studio 2013 both x86 and x86
adjust Debug mode. Go to configuration > C/C++ > Code Generation > Runtime Library and select Multi-threaded Debug (/MTd)
Finally I solved this problem by reinstalling VS2015 with selecting all the options that can be installed, it takes a lot space but it really works.
I downloaded msvcr120d.dll and msvcp120d.dll for 32-bit version and then, I put them into Debug folder of my project. It worked well. (My computer is 64-bit version)
My problem was with x64 compilations deployed to a remote testing machine. I found the x64 versions of msvp120d.dll and msvcr120d.dll in
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\redist\Debug_NonRedist\x64\Microsoft.VC120.DebugCRT
I had the same problem in Visual Studio Pro 2017: missing MSVCP120.dll file in Release mode and missing MSVCP120d.dll file in Debug mode.
I installed Visual C++ Redistributable Packages for Visual Studio 2013 and Update for Visual C++ 2013 and Visual C++ Redistributable Package as suggested here Microsoft answer this fixed the release mode.
For the debug mode what eventually worked was to copy msvcp120d.dll and msvcr120d.dll from a different computer (with Visual studio 2013) into C:\Windows\System32
Alternate approach : without installation of Redistributable package.
Check out in some github for the relevant dll, some people upload the reference dll for their application dependency.
you can download and use them in your project , I have used and run them successfully.
example : https://github.com/Emotiv/community-sdk/find/master
I was building my application on VS 2019 when this issue came up. You can copy these DLLs from this location into debug directory of your application to get going.

Visual Studio 2012

I am Having some issues with Visual Studio 2012, When build my solution and run the debug it says MSVCP100D.dll is missing
Screen dump:
When i try to run my program using Release it compiles fine and runs but then it randomly runs into run time error:
it then will not build any more underlining these CV_8U & CV_8UC3
I am using OpenCV library, also my code worked perfectly fine on Visual Studio 2010; but i decided to upgrade to 2012.
I would ideally Build my solution using DEBUG..........
Any solutions or suggestions...?
Regards
It looks like you are linking against the opencv libs for Visual Studio 2010. You will have to compile the opencv library for Visual Studio 2012 yourself as the pre-built ones are for Visual Studio 2010.
The information on how to do that can be found under Installation by Making Your Own Libraries from the Source Files.