3.3 Uso de DLLs en la práctica

Python para Windows se construye con Microsoft Visual C++; otros compiladores pueden funcionar o no (parece que el de Borland sí). El resto de la sección es específico de MSVC++.

Al crear DLLs en Windows, se ha de pasar python15.lib al enlazador. Para construir dos DLLs, spam y ni (que usa funciones C de spam), se podrían usar las siguientes órdenes:

cl /LD /I/python/include spam.c ../libs/python15.lib
cl /LD /I/python/include ni.c spam.lib ../libs/python15.lib

La primera orden genera tres ficheros: spam.obj, spam.dll y spam.lib. Spam.dll no contiene ninguna función de Python (del estilo de PyArg_ParseTuple()), pero sabe como acceder al código de Python gracias a python15.lib.

La segunda orden genera ni.dll (además de .obj y .lib), que dispone de información para acceder a las funciones relevantes de spam y del ejecutable de Python.

No se exportan todos los identificadores a la tabla de consulta. Si se desea que otros módulos (incluido Python) sean capaces de ver los identificadores, se debe declarar con "_declspec(dllexport)", como en "void _declspec(dllexport) initspam(void)" o "PyObject _declspec(dllexport) *NiGetSpamData(void)".

Developer Studio incluirá en el lote muchas bibliotecas de importación que no son en realidad necesarias, añadiendo unos 100K al ejecutable. Para librarse del lastre, se debe usar el diálogo de Project Settings, carpeta Link, para especificar ignore default libraries (hacer caso omiso de las bibliotecas predeterminadas). Se debe agregar a la lista de bibliotecas el msvcrtxx.lib correcto.


Ver Sobre este documento... para obtener información sobre sugerencias.