On 07/24/2013 08:51 PM, David M. Cotter wrote:
update: okay so the python27.dll is in /windows/system32 so ignore thati've set my include directory correct, so i can compile i've set my "additional libraries" directory to the "libs" directory (where the ".lib" files are. (note: NOT including "Lib" directory, cuz that's full of .py files and folders) (note: NOT including "DLLs" directory, cuz, why would i?) No need to specify "additional dependencies" for the .lib file, cuz the pyconfig.h file does that. but there is no "python27_d.dll" anywhere to be found, so i hacked pyconfig.h to get rid of the "_d". so it all compiles. but it won't link: LNK2001: unresolved external symbol __imp___Py_RefTotal LNK2001: unresolved external symbol __imp___Py_NoneStruct LNK2019: unresolved external symbol __imp__PyArg_ParseTuple LNK2019: unresolved external symbol __imp__PyFloat_FromDouble LNK2019: unresolved external symbol __imp__PyString_FromString LNK2019: unresolved external symbol __imp__PyRun_SimpleStringFlags LNK2019: unresolved external symbol __imp__Py_InitModule4TraceRefs LNK2019: unresolved external symbol __imp__Py_Initialize LNK2019: unresolved external symbol __imp__Py_SetProgramName LNK2019: unresolved external symbol __imp__Py_Finalize LNK2019: unresolved external symbol __imp__PyRun_SimpleFileExFlags what, pray tell, am i doing wrong? *hopeful face*
Digging *far* back in my Windows memory, those look like imports. You probably need the import lib for the Python.dll. Probably called somethng like python.lib. You could check that by doing a dumpbin of python.dll and searching for those entry points.
An import lib in Windows simply tells the linker that those symbols will be resolved at runtime, and from a particular dll. They can also change the names to be used (removing the __imp__ prefix) and even specify a numeric entry point (to slow down people who reverse engineer these things).
If I recall right, there's a way in Microsoft's toolset to create an import lib from a dll, assuming the dll doesn't restrict itself to those numeric thingies.
As for the _d suffix, that's commonly used to specify debug versions of things. They would have extra symbol information, and less optimized code so that it's easier to use a debugger on them.
-- DaveA -- http://mail.python.org/mailman/listinfo/python-list
