P
Hallo,
das habe ich natürlich sofort ausprobiert, allerdings folgten andere Fehlermeldungen. Ich vermute, dass meine DLL-Einbindung fehlerhaft ist.
Deshalb habe ich noch einmal von vorne begonnen.
Ich habe deshalb mit “dumpbin /exports /out:exports.txt GPxi3051w.dll“ eine exports.txt mit folgendem Inhalt erstellt.
Dump of file GPxi3051w.dll
File Type: DLL
Section contains the following exports for GPxi3051w.dll
00000000 characteristics
4402DFAE time date stamp Mon Feb 27 12:17:02 2006
0.00 version
1 ordinal base
15 number of functions
9 number of names
ordinal hint RVA name
1 0 0000133D GPxi3051_DLL_Version
6 1 00001587 GPxi3051_DpramReadMonitor
5 2 00001531 GPxi3051_DpramReadResponse
4 3 000014A6 GPxi3051_DpramWriteInstruction
2 4 000012CF GPxi3051_GetDriverInfo
14 5 00001637 GPxi3051_ReadWriteSpezial
7 6 000015F0 GPxi3051_ResetPort
3 7 00001358 GPxi3051_XilinxDownload
15 8 00001683 GPxi3051_XilinxWriteData
Summary
4000 .data
1000 .rdata
1000 .reloc
5000 .text
Daraus habe ich dann eine “GPxi3051w.def“ mit folgendem Inhalt erstellt
LIBRARY "GPxi3051w.dll"
EXPORTS
GPxi3051_DLL_Version @1
GPxi3051_DpramReadMonitor @6
GPxi3051_DpramReadResponse @5
GPxi3051_DpramWriteInstruction @4
GPxi3051_GetDriverInfo @2
GPxi3051_ReadWriteSpezial @14
GPxi3051_ResetPort @7
GPxi3051_XilinxDownload @3
GPxi3051_XilinxWriteData @15
Jetzt habe ich ein leeres Consolen-Projekt erstellt die "GPxi3051w.def" und eine Header-Datei mit folgendem Inhalt hizugefügt.
/*------------------------------------------------------------------*/
/* Defines */
/*------------------------------------------------------------------*/
#define DEV_MAX 12
/*------------------------------------------------------------------*/
/* Typedefs */
/*------------------------------------------------------------------*/
typedef struct
{
unsigned long Version;
unsigned long DevCount;
unsigned long SW_XILINX[DEV_MAX];
unsigned long GeoAddress[DEV_MAX];
unsigned long SerialNumber[DEV_MAX];
unsigned long Revision[DEV_MAX];
} GPxi3051_StructDriverInfo;
/*------------------------------------------------------------------*/
/* Functions */
/*------------------------------------------------------------------*/
#define DllImport __declspec( dllimport )
DllImport int GPxi3051_DLL_Version(unsigned long *pVersion);
DllImport int GPxi3051_DpramReadMonitor(unsigned long card, unsigned long port,void *data, unsigned long *length);
DllImport int GPxi3051_DpramReadResponse(unsigned long card, unsigned long port, unsigned char data[], unsigned long *length);
DllImport int GPxi3051_DpramWriteInstruction(unsigned char data[], unsigned long length);
DllImport int GPxi3051_GetDriverInfo(GPxi3051_StructDriverInfo *pDriverInfo);
DllImport int GPxi3051_ResetPort(unsigned long card, unsigned long port);
DllImport int GPxi3051_XilinxDownload(unsigned long card, char *pFileName);
DllImport int GPxi3051_XilinxWriteData(unsigned char data[], unsigned long length);
Zur Vollständigkeit auch noch das Programm
#include "stdafx.h"
#include "GPxi3051w.h"
int main(int argc, char* argv[])
{
int errornr;
errornr = GPxi3051_ResetPort(1, 1);
return TRUE;
}
Beim erstellen wird folgende Fehlermeldung ausgegeben.
Temporäre Dateien und Ausgabedateien für "tcan - Win32 Debug" werden gelöscht.
--------------------Konfiguration: tcan - Win32 Debug--------------------
Kompilierung läuft...
StdAfx.cpp
tcan.cpp
Linker-Vorgang läuft...
GPxi3051w.def : error LNK2001: Nichtaufgeloestes externes Symbol GPxi3051_DLL_Version
GPxi3051w.def : error LNK2001: Nichtaufgeloestes externes Symbol GPxi3051_DpramReadMonitor
GPxi3051w.def : error LNK2001: Nichtaufgeloestes externes Symbol GPxi3051_DpramReadResponse
GPxi3051w.def : error LNK2001: Nichtaufgeloestes externes Symbol GPxi3051_DpramWriteInstruction
GPxi3051w.def : error LNK2001: Nichtaufgeloestes externes Symbol GPxi3051_GetDriverInfo
GPxi3051w.def : error LNK2001: Nichtaufgeloestes externes Symbol GPxi3051_ReadWriteSpezial
GPxi3051w.def : error LNK2001: Nichtaufgeloestes externes Symbol GPxi3051_ResetPort
GPxi3051w.def : error LNK2001: Nichtaufgeloestes externes Symbol GPxi3051_XilinxDownload
GPxi3051w.def : error LNK2001: Nichtaufgeloestes externes Symbol GPxi3051_XilinxWriteData
Debug/tcan.lib : fatal error LNK1120: 9 unaufgeloeste externe Verweise
LINK : fatal error LNK1141: Fehler bei der Erstellung der Exportdatei
Fehler beim Ausführen von link.exe.
tcan.exe - 11 Fehler, 0 Warnung(en)
Was habe ich falsch gemacht?
Mit freundlichen Grüßen
PierreOne