Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Temas - ^[GS]^

#1
Programación C/C++ / char* char** y VB6
29 Mayo 2018, 10:08 AM
Hola, estoy con problema, hice una DLL (en Golang), que se compila en C, con los tipos de C, en la cual utilizo char* para enviar strings y char** para devolver strings, el problema es que no importa como lo declare en VB6 no logro poder usar estos métodos.

Las funciones se exportan con:
extern GoInt32 PrintHello(char* p0, char** p1);
extern GoInt32 PrintBye(char** p0);
extern GoInt32 LenString(char* p0);

Obviamente el tipo GoInt32 es propio de Golang, en VB6 lo puedo leer perfectamente como Long.

En teoría debería poder usar estos metodos en VB6 con la siguiente declaración:
Declare Function PrintHello Lib "testDLL.dll" (ByVal Nombre As String, ByRef Output As String) As Long
Declare Function PrintBye Lib "testDLL.dll" (ByRef Output As String) As Long
Declare Function LenString Lib "testDLL.dll" (ByVal Nombre As String) As Long


Pero no, no consigue otro mensaje que "Bad DLL calling convention". Hice otros métodos, que devuelven char* en lugar de GoInt32 (extern char* OutString();) y FUNCIONAN con VB6 como Strings (Declare Function OutString Lib "testDLL.dll" () As String), pero no como parámetro.

Gracias!!