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