Cómo usar vc para escribir una DLL llamada por pb
(1) Convención de llamada
Para escribir una DLL para que PB la llame, utilice la convención de llamada _stdcall, de la siguiente manera:
extern C _declspec(dllexport) int _stdcall GetInt (char* name){
...}(2) archivo def p>
En VC, si la DLL generada no puede usar el archivo .def, simplemente agregue el modificador __declspec(dllexport) antes de la definición de la función VC. Los usuarios de DLL VC generados pueden usarlo directamente, pero PB, VB y otros usuarios encontrarán problemas con la conversión de nombres de funciones. Porque VC realizará la conversión de nombres para las funciones declaradas por __declspec (dllexport), como la siguiente función:
__declspec (dllexport) int _stdcall GetStr ()
Se convertirá a GetStr después de la compilación @0, por lo que se debe declarar GetStr@0 al declarar funciones en funciones PB y VB.
Si la función toma parámetros, el nombre de la función convertida será más complejo, lo que lo hace inconveniente para PB y Usuarios de VB para usar. Este problema se puede resolver mediante la función EXPORTAR salida en el archivo def.
Por ejemplo, dll genera las siguientes dos funciones:
extern C _declspec(dllexport) int _stdcall GetInt(char* name);
extern C _declspec( dllexport) char* _ stdcall GetStr(int id);
Luego escriba el archivo def de la siguiente manera (PRUEBA es el nombre del proyecto):
PRUEBA DE BIBLIOTECA
DESCRIPCIÓN EXPORTACIONES 'PRUEBA de la biblioteca de vínculos dinámicos de Windows' Las exportaciones explícitas se pueden colocar aquí GetInt @1GetStr @2 Después de compilar la DLL, para llamar a la función GetStr en PB, simplemente haga la siguiente declaración:
Tenga en cuenta que si usted construye Si se trata de un proyecto de biblioteca de enlaces dinámicos Win32, debe crear el archivo def usted mismo. Si está creando un proyecto de biblioteca de vínculos dinámicos Win32, deberá crear el archivo def usted mismo y agregarlo al proyecto, y el nombre del archivo def debe ser el mismo que el nombre del proyecto. Por ejemplo, si el nombre del proyecto es prueba, cree test.def.
Tenga en cuenta que si está creando un proyecto de biblioteca de vínculos dinámicos Win32, deberá crear el archivo def usted mismo y agregarlo al proyecto. .