2011-07-17 18 views
8

Necesito ayuda para compilar una secuencia de comandos ("iterator.c") en una DLL. No puedo usar VS2010 ya que no admite admite las características agregadas a C en el estándar C99 (estoy usando "complex.h" pero VB no lo admite).Creando una DLL en GCC o Cygwin?

He estado buscando un sustituto, pero todo lo que he encontrado es GCC que no sé cómo instalar/usar (realmente, he pasado como media hora leyendo la documentación y no lo hago). incluso entiendo cómo se supone que debo instalarlo) y Cygwin, que ya instalé pero no sé cómo usarlo. Además, instalé MinGW, pero creo que es más o menos lo mismo que Cygwin, y todavía no sé cómo hacer una DLL.

No es que haya sido perezoso y ni siquiera lo haya intentado, es solo que estos compiladores no son como nada que haya usado antes (principalmente Python IDLE y Visual Studio, que hacen las cosas bastante fáciles para ti). Estoy perdido.

¿Podría alguien darme algunos consejos sobre cómo usar estas herramientas para crear una DLL a la que pueda acceder desde otra secuencia de comandos? Es realmente importante.

Gracias de antemano.

Respuesta

11

Debe colocar __declspec (dllexport) frente al método que desea exportar tales como, usted podría #define que esto sea más fácil máximo

EXPORT_DLL void hello() { ... } 

Para compilar el uso DLL

gcc -c -mno-cygwin mydll.c 
gcc -shared -o mydll.dll mydll.o -Wl,--out-implib,libmylib.dll.a 

continuación, adjuntar

gcc -o myexe.exe test.o mydll.dll 

EDIT: ¿Ha olvidado la pieza más importante, es necesario hacer una fi mydll.h Incluya la definición de su método para que el compilador sepa reservar un lugar para que el vinculador lo complete más adelante. Es tan simple como

#ifndef MYDLL_H 
#define MYDLL_H 

extern "C" __declspec(dllexport) 
#define EXPORT_DLL __declspec(dllexport) 

EXPORT_DLL void hello(); 

#endif 
+0

¿No es '__declspec' no' __delspec'? –

+0

extern "C" __declspec (dllexport) –

+0

Gracias chicos por atrapar eso, errores al escribir sobre la marcha. –

Cuestiones relacionadas