Código fuente de Vcdllvb
ejemplo de short __stdcall (short nLen, short *buffer)
Para realizar la segunda operación, debe agregar la siguiente línea al archivo *. Archivo de definición:
Exportar
Muestra @1
La muestra aquí es el nombre de la función que desea llamar en VB, @1 significa que la función es en la DLL El número es diferente para cada función. Tenga en cuenta que los nombres de las funciones aquí distinguen entre mayúsculas y minúsculas. En cuanto a la necesidad de transferir una gran cantidad de datos, esto se puede lograr en VB almacenando los datos en una matriz y luego pasando el tamaño y la dirección de la matriz a VC (en cuanto a cómo programar en VB, presentaré (ver más abajo). Al igual que en el ejemplo anterior, nLen es el tamaño de la matriz y el búfer es la dirección de la matriz. Con estos dos elementos, puedes usar VC para procesarlo como una matriz. En cuanto a los gráficos de salida, se pueden generar formatos WMF o BMP para llamadas VB. Sin embargo, creo que también se puede enviar directamente a la ventana, siempre que VB envíe los identificadores de ventana hWnd y hDC y la posición de dibujo de la ventana (los sistemas de coordenadas utilizados por VB y VC deben ser los mismos) a VC. La propiedad AutoRedraw de VB debe ser False y el programa de dibujo de VC se llama en el evento Paint.
Hablemos de programación VB. El método para que VB llame a DLL es el mismo que el método para llamar a la API de Windows, que generalmente se presenta en los libros de VB. Para el ejemplo anterior, primero declare la función VC:
Declare la biblioteca de muestra de funciones "mydll.dll" (ByVal nLen es un número entero, buffer es un número entero) como un número entero
Aquí mydll.dll es el nombre de su biblioteca de enlaces dinámicos. Quizás hayas notado que la declaración de estos dos parámetros es diferente. ByVal se agrega al primer parámetro. La regla es la siguiente: si un parámetro se declara como un puntero o una matriz en VC, no agregue ByVal; de lo contrario, agregue ByVal. La siguiente sintaxis se usa para llamar a esta función en VB:
Muestra 10, a(0)
La matriz a() aquí se usa para almacenar datos y 10 es la matriz. longitud. El segundo parámetro aquí no puede ser (), pero debe ser el primer dato que se pasará. Esta es la clave para la programación VB.
Aquí hay varios problemas posibles. Un problema es que VB puede informar que no se puede encontrar la DLL. Puede colocar el dll en el directorio del sistema y asegurarse de que la declaración VB Declare sea correcta. Otro problema es que el informe de VB no puede encontrar la función requerida, lo que generalmente se debe a archivos *. No hay ningún archivo def configurado en VC. En el tercer caso, VB le dice que no se puede realizar la conversión. Esto puede deberse a que la palabra clave __stdcall no se agrega en VC o a que los tipos de parámetros de VB y VC son inconsistentes. Tenga en cuenta que en VC, int tiene 4 bytes (equivalente a Long de VB), mientras que Integer de VB tiene solo 2 bytes. Debe asegurarse de que VB y VC tengan la misma cantidad de parámetros y la misma cantidad de bytes. Lo último a tener en cuenta es que no debe haber una matriz fuera de los límites en VC; de lo contrario, el programa VB fallará.
En términos generales, a usted y a su pareja les llevará algún tiempo coordinarse y explorar, pero este método es absolutamente factible y no difícil de dominar.