Author | Topic: libreria en Visual C++ | |
---|---|---|
Ernesto Avedillo | libreria en Visual C++ on Mon, 20 Oct 2008 19:00:41 +0200 Hola a todos, He adquirido una tarjeta pci que trae un driver para ser usado en Visual C++ No consigo acceder a l. Lo que he hecho es incluir el LIB y el DLL en el directorio correspondiente y luego lo he llamado a la libreria mediante #pragma Library( "adsapi32.lib" ) Sin embargo cuando quiero llamar una funcin definida en esta DLL no me la encuentra al lincar. Hago algo mal? Hay algun truco? Gracias Ernesto | |
Pablo Botella | Re: libreria en Visual C++ on Mon, 20 Oct 2008 23:07:13 +0200 Hola > y luego lo he llamado a la libreria mediante > #pragma Library( "adsapi32.lib" ) Eso estaría bien si la librería estuviera hecha con o para Xbase++, pero obviamente no es el caso. > Sin embargo cuando quiero llamar una función definida en esta DLL no me la > encuentra al lincar. Y si se diera el caso de que la encuentra por casualidad, pues aun peor porque te reventaría el programa. ( Defino casualidad: La función está en mayusculas en la librería, no tiene decoracion, la libreria es del mismo tipo que genera el linker de VC++ 5) > Hago algo mal? Hay algun truco? Si, no sufras que la puedes usar sin problema, solo que vas a necesitar un poquito de trabajo extra, bien usando DllCall() , DLL FUNCTION , DllPrepareCall()/DllExecuteCall() o bien usando las funciones y comandos del ot4xb que facilitan mucho las cosas y además es gratuito Ahi te paso el enlace al tutorial que hice para la conferencia de Berlin del año pasado ahi explico un poco tanto usando DllCall() como con los comandos y funciones de ot4xb. http://www.xbwin.com/download/WinApi_Tutor.zip Saludos, Pablo Botella | |
Ernesto Avedillo | Re: libreria en Visual C++ on Tue, 28 Oct 2008 09:59:01 +0100 Hola pablo, Verdaderamente, me ha parecido una libreria muy buena. He tardado en contestar porque como nunca he programado en C++, me ha costado entender (y todavia hay cosas que no entiendo) como funciona. Tengo una serie de preguntas que quizas me puedas responder, Tengo que crear una estructura que en C++ es la siguiente, typedef struct _DRIVERINFO { struct _DRIVERINFO far * pNext; next device info. address ULONG ulDeviceNum; device number HGLOBAL hDriverInfo; driver info. handle USHORT usUsageCount; usage count HINSTANCE hDriverInstance; driver instance handle FARPROC lpfnDriverEntry; driver entry address LONG hDeviceInfo; deivce info. (Lock data) }DRIVERINFO , FAR * LPDRIVERINFO; Mi intencin es sustituirla por el siguiente cdigo, PROCEDURE Main Public LPDRIVERINFO LPDRIVERINFO := DRIVERINFO():New() RETURN Begin Structure _DRIVERINFO MEMBER WORD ulDeviceNum; device number max 255 MEMBER BINSTR SIZE 128 hDriverInfo; driver info. handle MEMBER DWORD usUsageCount; usage count MEMBER DWORD hDriverInstance; driver instance handle MEMBER DWORD64 lpfnDriverEntry; driver entry address MEMBER DWORD64 hDeviceInfo; deivce info. (Lock data) End Structure Begin Structure DRIVERINFO MEMBER @ _DRIVERINFO pNext next device info. address MEMBER WORD ulDeviceNum; device number max 255 MEMBER BINSTR SIZE 128 hDriverInfo; driver info. handle MEMBER DWORD usUsageCount; usage count MEMBER DWORD hDriverInstance; driver instance handle MEMBER DWORD64 lpfnDriverEntry; driver entry address MEMBER DWORD64 hDeviceInfo; deivce info. (Lock data) End Structure Sera esto correcto? Por otro lado , no he acabado de entender bien el concepto de DYNAMIC PROPERTY entre otras muchas cosas y lo que creo es que me faltan conocimientos de C++. Por eso he pensado que tendria que estudiar un poco mas sobre el tema y quisiera que me aconsejases alguna referencia donde aprender algo del tema. Saludos Ernesto Avedillo "Pablo Botella" <pb_no_spam_@_remove_all_betwen_underscores_xbwin.com> escribi en el mensaje news:3620f200$69205f27$edf1@news.alaska-software.com... Hola > y luego lo he llamado a la libreria mediante > #pragma Library( "adsapi32.lib" ) Eso estara bien si la librera estuviera hecha con o para Xbase++, pero obviamente no es el caso. > Sin embargo cuando quiero llamar una funcin definida en esta DLL no me la > encuentra al lincar. Y si se diera el caso de que la encuentra por casualidad, pues aun peor porque te reventara el programa. ( Defino casualidad: La funcin est en mayusculas en la librera, no tiene decoracion, la libreria es del mismo tipo que genera el linker de VC++ 5) > Hago algo mal? Hay algun truco? Si, no sufras que la puedes usar sin problema, solo que vas a necesitar un poquito de trabajo extra, bien usando DllCall() , DLL FUNCTION , DllPrepareCall()/DllExecuteCall() o bien usando las funciones y comandos del ot4xb que facilitan mucho las cosas y adems es gratuito Ahi te paso el enlace al tutorial que hice para la conferencia de Berlin del ao pasado ahi explico un poco tanto usando DllCall() como con los comandos y funciones de ot4xb. http://www.xbwin.com/download/WinApi_Tutor.zip Saludos, Pablo Botella | |
Pablo Botella | Re: libreria en Visual C++ on Mon, 03 Nov 2008 11:15:57 +0100 BEGIN STRUCTURE DRIVERINFO MEMBER DWORD pNext MEMBER ULONG ulDeviceNum MEMBER HANDLE hDriverInfo MEMBER WORD usUsageCount MEMBER WORD wDummy #pragma pack(push, 8) MEMBER HANDLE hDriverInstance MEMBER DWORD lpfnDriverEntry MEMBER LONG hDeviceInfo END STRUCTURE |