Extensiones nativas de python para Blender con visual Studio 2013

3dpoder - 28/04/2014 19:44
Investigar cómo crear un módulo de Python en C con Microsoft Visual Studio 2013 me causó bastantes dolores de cabeza por lo que para salvar a otras personas del mismo dolor, escribí este artículo que ilustra el proceso paso a paso. La solución resultante está disponible en GitHub.
REQUISITOS PREVIOS.
Al escribir extensiones nativas para Python se dice que es de vital importancia utilizar exactamente el mismo compilador que utilizó el compilador en sí mismo (o más bien su Python incrustado) Blender. Esto es especialmente importante en Windows donde incluso diferentes versiones de Visual Studio pueden romper la compatibilidad. Sin embargo, he encontrado que Visual Studio 2013 puede ser utilizado para compilar una extensión que se puede utilizar tanto para la versión de Blender compilado con msvc2008 y msvc2013.
Actualmente, Blender se construye con Visual Studio 2013, esto se puede verificar mediante la apertura de Blender y generando la información en el sistema de Ayuda -.> Info del sistema. En el archivo de texto generado (disponible en el editor de texto) de la línea con la versión de Python debe decir algo como: 1800 64 bits. El 1800 parte es la parte interesante, ya qué identifues la versión de Visual Studio, donde 1800 significa MSVC 2013.

El lanzamiento oficial Blender 2,70 para Windows todavía se construye con MSVC 2008 (la cadena de información sobre la versión del sistema mostrara 1,500) no he encontrado ningún problema de compatibilidad, pero, por supuesto, su kilometraje puede variar. Sin embargo, es muy importante que coincida con la plataforma: una extensión de 64 bits sólo funciona para 64 bits Blender.
ESCRIBIR Un MÓDULO DE EXTENSIÓN EN C.
El punto de partida para escribir una extensión es esta página Es una introducción bastante completa, pero su contenido es independiente de la plataforma. Para compilar el código C, en realidad, en una biblioteca dinámica qué se pueda utilizar en Windows se necesita información adicional Desafortunadamente parte de la información que se muestra en esta página es incorrecta o incompleta (/export:initexample no es necesario, la (*.dll) necesita una extensión pyd.) y hay algunos pasos confusos, también podrían tener la información enumerada para una mejor comprensión.

En el siguiente tutorial voy a suponer que Blender está instalado en C:\Blender y que estamos utilizando MVSC 2013 Express Edition para escritorio. También supongo que, ha obtenido la biblioteca de Python con la qué Blender esta construido con, a C:\BlenderLibraries. Necesitamos la fuente de estas bibliotecas para Python, h y archivos de inclusión. (Usted puede obtener estas bibliotecas con cualquier cliente de Subversion desde svn, Blender.org, vea aquí para obtener instrucciones. Asegúrese de obtener las versiones de 64 bits si esta compilando para una plataforma de 64 bits y vera qué la carpeta se llama win64_vc12 a pesar de que estas usando msvc 2013).
DIEZ PASOS FÁCILES.
Son necesarios los siguientes pasos para crear una extensión simple. Cada paso se explica en detalle a continuación.
[LIST=1]
  • Crear un nuevo proyecto de DLL.
  • Agregar una nueva plataforma x64, si es necesario.
  • Configura la extensión para usar.
  • Configurar el directorio include.
  • Configurar el directorio de la biblioteca.
  • Añadir las dependencias de bibliotecas.
  • Añadir el código fuente.
  • Genere el proyecto.
  • Copie la biblioteca a la instalación de Blender.
  • Pruébelo de Blender.[/list]
    Crear un nuevo proyecto de DLL[INDENT]Archivo-> Nuevo proyecto.

    Plantillas-> Visual C + + -> Win32-> Proyecto Win32.

    Nombre: BlenderTest (se puede colocar en cualquier lugar, deje todos los valores predeterminados).[/INDENT]
    En el asistente de la aplicación que se abre seleccione DLL y proyecto vacío.
    Agregar una nueva plataforma x64, si es necesario
    i = Si usted esta trabajando en/para una plataforma de 64 bits, tendrá que añadir una plataforma x64 a su solución.[INDENT]haga clic en el gestor de configuración [por debajo de la barra de menú en la barra de tareas].
    agregar una nueva plataforma activa [haga clic en la parte que probablemente aparezca Win32].
    seleccione x64 y dejar todos los ajustes por defecto.[/INDENT].
    Configura la extensión a usar
    Aunque una extensión nativa es sólo una DLL, Python quiere que tenga una extensión.pyd:[INDENT]En las propiedades del proyecto BlenderTest
    para todas las configuraciones establecidas
    las propiedades de configuración -> General de la extensión de destino para pyd.[/INDENT].
    Configurar el directorio include
    El compilador debe ser capaz de encontrar el Python, h include file.
    Configuration properties -> C/C++ -> General Add
    C:\BlenderLibraries\win64_vc12\Python\include\Python3.3 o Additional Include directories.
    Configurar el directorio de la biblioteca
    Las bibliotecas de Python deben funcionar así, para todas las configuraciones.

    Configuration properties -> Linker -> General Add
    C:\BlenderLibraries\win64_vc12\Python\lib o Additional Library directories.
    Añadir las dependencias de bibliotecas
    Cada configuración es dependiente de una librería diferente:
    para la configuración de depuración
    Linker -> Input Add Python33_d, lib o Additional Dependencies
    para la configuración de lanzamiento
    Linker -> Input Add Python33.lib o Additional Dependencies.
    Añadir el código fuente
    En el explorador de soluciones, haga clic derecho en la carpeta Archivos de código fuente en el proyecto BlenderTest y seleccione añadir -> nuevo elemento. Elija archivo C++ y darle a BlenderTest, cpp es su nombre (aunque eres libre de elegir lo que quieras).

    Copie el código de ejemplo (es posible que dese utilizar este) en el editor.

    Construir la solución (una advertencia sobre un enlace (*.dll) inconsistente de link (*.dll) se puede ignorar).
    Genere el proyecto
    Seleccione la configuración de lanzamiento y haga clic en Generar -> Generar solución.

    El módulo estará en la subcarpeta BlenderTest\x64\Reléase y será llamado BlenderTest, pyd.
    Copie la biblioteca a la instalación de Blender
    Copia BlenderTest, pyd a algún lugar donde Blender pueda encontrarlo, por ejemplo, en el directorio site-packages dentro del directorio de instalación de Blender (por ejemplo, C: \ Blender \ 2.70 \ Python \ lib \ site-packages).
    Pruébelo de Blender
    Abrir la consola de Python en Blender
    Importe BlenderTest
    BlenderTest, fo ().

    La consola del sistema (Window -> toggle system console) debe mostrar Hola Mundo.

    Publicado por Michael en Blenderthings.