SoloCodigo
Programación General => C/C++ => Visual C++ => Mensaje iniciado por: jor1980 en Sábado 27 de Febrero de 2010, 19:37
-
Hola, tengo un problema necesito crear una dll con un proyecto creado por nvidia se llama nvtristrip y sirve para crear trianglestrips.
Para mi es importante crear esta dll para poder usarla con visual basic, pensé que si abría el proyecto con visual c++ y le daba a generar me valdría pero parece que no porque me aparecen múltiples errores.
Me podéis indicar como puedo compilar este proyecto en una dll teniendo en cuenta que no se c++?
El proyecto se puede descargar metiendo nvtristrip en google por si alguien es tan amable de echarle un vistazo a ver si me puede orientar
Muchas gracias
-
Tienes que hacer un envoltorio compatible a esa biblioteca o bien cambiar todas las definiciones de las funciones públicas para que sean compatibles con la exportación de una DLL.
Create una DLL vacía con el asistente de Visual Studio y tendrás una idea de cómo es el formato.
-
Tienes que hacer un envoltorio compatible a esa biblioteca o bien cambiar todas las definiciones de las funciones públicas para que sean compatibles con la exportación de una DLL.
Create una DLL vacía con el asistente de Visual Studio y tendrás una idea de cómo es el formato.
Hola gracias por la respuesta, sabes de algún lugar donde encontrar un tutorial sobre esto para verlo de forma más clara?es muy importante para mi, de todas formas he probado a compilar el proyecto tal y como lo creó nvidia y me da errores, esto puede ser porque tenga que adaptar algo del proyecto al haber sido creado en una versión anterior de c++?
-
Si llegas hasta ese punto no te olvides de exportar las funciones con la convencion de llamada stdcall, la unica que soporta VB.
-
Creéis que es algo que pueda hacer sin conocimientos de c++ sólo con la orientación de un buen tutorial?
-
Creéis que es algo que pueda hacer sin conocimientos de c++ sólo con la orientación de un buen tutorial?
No mucho, pero...
http://geeks.ms/blogs/rfog/archive/2009 ... tar-i.aspx (http://geeks.ms/blogs/rfog/archive/2009/06/29/todo-lo-que-quisiste-saber-sobre-las-dll-y-no-te-atreviste-a-preguntar-i.aspx" onclick="window.open(this.href);return false;)
http://geeks.ms/blogs/rfog/archive/2010 ... ar-ii.aspx (http://geeks.ms/blogs/rfog/archive/2010/01/29/todo-lo-que-quisiste-saber-sobre-las-dll-y-no-te-atreviste-a-preguntar-ii.aspx" onclick="window.open(this.href);return false;)
Tengo prevista una tercera parte sobre cómo crear DLL en C y C++, pero todavía no la he hecho.
Eso mío, una simple búsqueda en google me da:
http://www.duamu.com/re/manual/1728/id/ ... con-c.html (http://www.duamu.com/re/manual/1728/id/446/manuales-creando-una-dll-con-c.html" onclick="window.open(this.href);return false;)
No es muy bueno, pero de algo te servirá.
-
Con el proyecto he visto que viene compilada en una librería .lib y en el readme pone los siguiente:
To use:
-#include "NvTriStrip.h"
-put nvtristrip.lib in your library path (the pragma in nvtristrip.h will automatically look for the library).
Podría esto servirme para crear la dll más fácilmente?
-
Hola he hecho un intento de crear la dll de la siguiente forma:
he creado un proyecto como librería de clases vacía y le incluí el Nvstrip.h en el directorio.
Mi proyecto se llama prueba y e el archivo prueba.cpp puse:
#include "NvTriStrip.h"
también puse el archivo.lib en el directorio
lo compilé y no me da errores me crea una dll, pero la dll no contiene nada
Se puede hacer esto que probé, o no tiene sentido?
-
Bueno, pues ahora, siguiendo los pasos descritos en los enlaces que te he puesto más arriba, tienes que "exportar" todas y cada una de las funciones públicas que aparezcan en "NvTriStrip.h", o bien crearte tu un nuevo juego de funciones que llamen a las de ese fichero cabecera.
En este momento la DLL está vacía porque no hay nada exportado, y el optimizador del linker lo limpia todo.