Red de conocimiento informático - Problemas con los teléfonos móviles - El problema con Ruby al llamar a funciones DLL es que las cadenas no se pueden mostrar normalmente; ¿cómo hacer referencia a la DLL requerida en la programación de DLL?

El problema con Ruby al llamar a funciones DLL es que las cadenas no se pueden mostrar normalmente; ¿cómo hacer referencia a la DLL requerida en la programación de DLL?

Win32API.new('DemoDLL', 'AddStringX', 'p', 'p').call(a)

Primero verifique si el parámetro a es una cadena. Si es necesario, use a.to_s y luego verifique si los datos devueltos por la DLL de C son caracteres o cadenas. Personalmente, creo que es un problema de DLL. Si eso no funciona, prueba lo siguiente.

win32api no debería ser tan bueno como la biblioteca dl, intente usar la biblioteca dl

require 'dl'

myd1=DL.dlopen('DEMO. dll' )

myd2=myd1['AddStringX', 'CS']

imprimir myd2.call('Test')

O imprimir mydll.call ( 'Test').to_s

Hace mucho que no uso Ruby, así que no puedo entenderlo.

La segunda pregunta

¿No estaría bien si la DLL se incluyera directamente al principio?

Simplemente llame a la función directamente después. . .

Algunas DLL de claves del sistema deben incluirse de forma predeterminada. Simplemente llame a las funciones internas directamente.

Si no ha escrito DLL en C, las DLL deberían ser las mismas según su experiencia. como exe ordinario. No hay diferencia en llamar al dll.

Desafortunadamente, su DLL proporciona muy poco código.