On Wednesday, 5 March 2014 09:10:33 UTC+2, Christoff Kok  wrote:
> Hi,
> 
> 
> 
> We are trying to wrap a 3rd party dll (written in C) to access it through 
> python.
> 
> The dll has a .lib .c and a .h file with it. We are accessing the dll through 
> the .c file.
> 
> 
> 
> Outisde of the extension (running as a console application), the code works 
> without an issue. without the 3rd party dll, the python extension works 
> without an issue. The issue comes in when trying combine the third party dll 
> with the python extension.
> 
> 
> 
> Here is the distutil installation script
> 
> 
> 
> ################ Setup.py ################################
> 
> 
> 
> from distutils.core import setup, Extension
> 
> 
> 
> chemAppPython_mod = Extension('chemAppPython', sources = ['chemAppPython.c', 
> 'cacint.c'], libraries=['ca_vc_opt_e'], depends = ['cacint.h'])
> 
> 
> 
> setup(name = "chemAppPython",
> 
>     version = "1.0",
> 
>     description = "The ChemnApp Python module",
> 
>     ext_modules = [chemAppPython_mod],
> 
>       data_files = [('',['ca_vc_e.dll'])]
> 
> )
> 
> 
> 
> ##########################################################
> 
> 
> 
> * ca_vc_opt_e.lib and ca_vc_e.dll is the library containing the third party 
> methods we want to access.
> 
> 
> 
> * cacint.h and cacint.c is the files acting as an interface to the 
> ca_vc_opt_e.lib and ca_vc_e.dll.
> 
> * chemAppPython.c is file containing the code wrapping the calls to the 
> cacint.c (and in effect, the third party dll)
> 
> 
> 
> The errors we are receiving are:
> 
> C:\Python33\source\Python-3.3.4\ChemAppPython>setup.py install
> 
> running install
> 
> running build
> 
> running build_ext
> 
> building 'chemAppPython' extension
> 
> creating build
> 
> creating build\temp.win-amd64-3.3
> 
> creating build\temp.win-amd64-3.3\Release
> 
> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\cl.exe /c 
> /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\Python33\include -IC:\Python33\include 
> /TcchemAppPython.c /Fobuild\temp.win-amd64-3.3\Release\chemAppPython.obj
> 
> chemAppPython.c
> 
> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\cl.exe /c 
> /nologo /Ox /MD /W3 /GS- /DNDEBUG -IC:\Python33\include -IC:\Python33\include 
> /Tccacint.c /Fobuild\temp.win-amd64-3.3\Release\cacint.obj
> 
> cacint.c
> 
> cacint.c(357) : warning C4267: 'function' : conversion from 'size_t' to 
> 'long', possible loss of data
> 
> cacint.c(390) : warning C4267: 'function' : conversion from 'size_t' to 
> 'long', possible loss of data
> 
> .
> 
> .
> 
> . (some more of the same warning message for different functions.)
> 
> .
> 
> cacint.c(619) : warning C4996: 'strcpy': This function or variable may be 
> unsafe. Consider using strcpy_s instead. To disable deprecation, use 
> _CRT_SECURE_NO_WARNINGS. See online help for details.
> 
> .
> 
> .
> 
> . 
> 
> . (some more of the same warning message at different positions in code.)
> 
> .
> 
> creating build\lib.win-amd64-3.3
> 
> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\amd64\link.exe 
> /DLL /nologo /INCREMENTAL:NO /LIBPATH:C:\Python33\libs 
> /LIBPATH:C:\Python33\PCbuild\amd64 ca_vc_opt_e.lib 
> /EXPORT:PyInit_chemAppPython 
> build\temp.win-amd64-3.3\Release\chemAppPython.obj 
> build\temp.win-amd64-3.3\Rele
> 
> chemAppPython.obj : warning LNK4197: export 'PyInit_chemAppPython' specified 
> multiple times; using first specification
> 
>    Creating library build\temp.win-amd64-3.3\Release\chemAppPython.lib and 
> object build\temp.win-amd64-3.3\Release\chemAppPython.exp
> 
> cacint.obj : error LNK2019: unresolved external symbol TQINI referenced in 
> function tqini
> 
> cacint.obj : error LNK2019: unresolved external symbol TQOPEN referenced in 
> function tqopen
> 
> .
> 
> .
> 
> . (a lot more of them, for different methods. Again, it builds and runs fine 
> in the console app host application.)
> 
> .
> 
> build\lib.win-amd64-3.3\chemAppPython.pyd : fatal error LNK1120: 74 
> unresolved externals
> 
> error: command '"C:\Program Files (x86)\Microsoft Visual Studio 
> 10.0\VC\BIN\amd64\link.exe"' failed with exit status 1120
> 
> 
> 
> 
> 
> Help would really be appreciated.

I solved it. Apparently 64bit Python doesn't mingle well (or at all) with 32bit 
dll's. I downgraded python to a 32bit version and everything just worked.
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to