Verwendung einer statischen Bibliothek in Visual Studio 2003
-
Hallo zusammen,
für die Umsetzung eines Projektes habe ich eine API bekommen. Sie besteht aus vielen Header-Dateien (.h) und einer statischen Bibliothek (.lib).Ich habe bereits die Standard-Include und Standard-Lib Verzeichnisse entsprechend erweitert.
Die Bibliothek hab ich folgendermaßen eingebunden:
#pragma comment(lib, "myLIB.lib")
(Ich hatte auch andere Varianten ausprobiert. Ich hab Sie einfach dem Projekt als Datei hinzugefügt bzw. Sie auch mal in den Compiler direktiven entsprechend angegeben)
Die verschiedenen Methoden führten alle zu dem selben Ergebnis und Problem:
Wenn ich alles kompiliere (problemlos) wird eine ausführbare Datei erstellt. Wenn ich diese Datei nun ausführe, erhalte ich jedoch folgende Fehlermeldung:
"Die Anwendung konnte nicht gestartet werden, weil myLIB.dll nicht gefunden wurde!"Ich habe garkeine dynamische Bibliothek (DLL) mit der API bekommen, bzw. möchte die Bibliothek auch direkt in die ausführbare Datei linken und in diesem Fall von DLLs absehen.
Wie kann ich Visual Studio mitteilen, dass die Bibliothek an die exe gebunden werden soll und ich garkeine DLL verwenden möchte ?
Wissen aus dem Visual C++ 6.0 Kompendium über statische Bibliotheken (Kap. 13):
Kompilierter Code einer Sammlung von Funktionen, Klassen, die aus einer oder mehreren Quelltextdateien stammen können. (Bearbeitung mittels dem Programm LIB.EXE). Statische Bibliotheken verfügen über eine Art "Inhaltsverzeichnis", das es dem Linker ermöglicht, nur die wirklich von der Anwendung benötigten Funktionen in die EXE-Datei einzubinden.
-
Hever schrieb:
Sie besteht aus vielen Header-Dateien (.h) und einer statischen Bibliothek (.lib).
Woher weisst Du dass dies eine "statische LIB" ist? Eine LIB-Datei kann sowohl "statisch erstellt" sein als auch "Verweise auf die DLL haben".
Hever schrieb:
Die Anwendung konnte nicht gestartet werden, weil myLIB.dll nicht gefunden wurde!
Dann würde ich mich mal an den Hersteller der LIB wenden... er hat dir dann entweder die falsche LIB gegeben oder die DLL vergessen.
Hast Du nur eine LIB-Datei oder mehrere bekommen?Hever schrieb:
Wie kann ich Visual Studio mitteilen, dass die Bibliothek an die exe gebunden werden soll und ich garkeine DLL verwenden möchte ?
Indem Du einfach keine Verweise auf diese DLL erzeugst! Wenn dies aber durch die LIB gemacht wird, dann hast Du die falsche LIB.
-
Hallo,
Dann würde ich mich mal an den Hersteller der LIB wenden... er hat dir dann entweder die falsche LIB gegeben oder die DLL vergessen.
Hast Du nur eine LIB-Datei oder mehrere bekommen?Nur eine Lib und ich hab nochmal geschaut wo die her kam:
http://deutsche-boerse.com/dbag/dispatch/de/kir/gdb_navigation/technology/30_Access_Products/30_Values_API/30_Xetra_DownloadsWoher weisst Du dass dies eine "statische LIB" ist? Eine LIB-Datei kann sowohl "statisch erstellt" sein als auch "Verweise auf die DLL haben".
Soweit ich mich jedoch informiert habe sollten die Funktionen tatsächlich auch Funktionalität bereitstellen und nicht nur eine Definition oder ein Modell. Da es nur diese Lib gibt und das Paket eigentlich ausreichend sein sollte, bin ich davon ausgegangen, dass die lib statisch sein muss und ich nur zu doof bin sie einzubinden.
-
Die LIB enthält keine einzige Zeile Code, sondern nur Verweise auf die DLL... Frag am besten bei denen nach wie es Funktionieren soll...
Die DLL enthält:Microsoft (R) COFF/PE Dumper Version 7.10.3077 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file values.lib File Type: LIBRARY Archive member name at 8: / 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 1A8 size correct header end 19 public symbols 3DA __IMPORT_DESCRIPTOR_VALUES 6E2 __NULL_IMPORT_DESCRIPTOR 818 VALUES_NULL_THUNK_DATA A3E _VCI_Dispatch A3E __imp__VCI_Dispatch B76 _VCI_Submit B76 __imp__VCI_Submit AA8 _VCI_Login AA8 __imp__VCI_Login B0E _VCI_Logout B0E __imp__VCI_Logout 96A _VCI_Connect 96A __imp__VCI_Connect 9D2 _VCI_Disconnect 9D2 __imp__VCI_Disconnect BDE _VCI_Subscribe BDE __imp__VCI_Subscribe C48 _VCI_Unsubscribe C48 __imp__VCI_Unsubscribe Archive member name at 1EC: / 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 1B2 size correct header end 11 offsets 1 3DA 2 6E2 3 818 4 A3E 5 B76 6 AA8 7 B0E 8 96A 9 9D2 A BDE B C48 19 public symbols 8 _VCI_Connect 9 _VCI_Disconnect 4 _VCI_Dispatch 6 _VCI_Login 7 _VCI_Logout 5 _VCI_Submit A _VCI_Subscribe B _VCI_Unsubscribe 1 __IMPORT_DESCRIPTOR_VALUES 2 __NULL_IMPORT_DESCRIPTOR 8 __imp__VCI_Connect 9 __imp__VCI_Disconnect 4 __imp__VCI_Dispatch 6 __imp__VCI_Login 7 __imp__VCI_Logout 5 __imp__VCI_Submit A __imp__VCI_Subscribe B __imp__VCI_Unsubscribe 3 VALUES_NULL_THUNK_DATA Archive member name at 3DA: VALUES.dll/ 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 2CB size correct header end FILE HEADER VALUES 14C machine (x86) 3 number of sections 4100DE6B time date stamp Fri Jul 23 11:46:19 2004 1EB file pointer to symbol table 8 number of symbols E0 size of optional header 100 characteristics 32 bit word machine OPTIONAL HEADER VALUES 10B magic # (PE32) 6.00 linker version 0 size of code 0 size of initialized data 0 size of uninitialized data 0 entry point (00000000) 0 base of code 0 base of data 0 image base (00000000 to FFFFFFFFFFFFFFFF) 1000 section alignment 200 file alignment 4.00 operating system version 0.00 image version 0.00 subsystem version 0 Win32 version 0 size of image 0 size of headers 0 checksum 2 subsystem (Windows GUI) 0 DLL characteristics 100000 size of stack reserve 1000 size of stack commit 100000 size of heap reserve 1000 size of heap commit 0 loader flags 10 number of directories 0 [ 0] RVA [size] of Export Directory 0 [ 0] RVA [size] of Import Directory 0 [ 0] RVA [size] of Resource Directory 0 [ 0] RVA [size] of Exception Directory 0 [ 0] RVA [size] of Certificates Directory 0 [ 0] RVA [size] of Base Relocation Directory 0 [ 0] RVA [size] of Debug Directory 0 [ 0] RVA [size] of Architecture Directory 0 [ 0] RVA [size] of Global Pointer Directory 0 [ 0] RVA [size] of Thread Storage Directory 0 [ 0] RVA [size] of Load Configuration Directory 0 [ 0] RVA [size] of Bound Import Directory 0 [ 0] RVA [size] of Import Address Table Directory 0 [ 0] RVA [size] of Delay Import Directory 0 [ 0] RVA [size] of COM Descriptor Directory 0 [ 0] RVA [size] of Reserved Directory SECTION HEADER #1 .debug$S name 0 physical address 0 virtual address 41 size of raw data 16C file pointer to raw data (0000016C to 000001AC) 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers 42100040 flags Initialized Data Discardable 1 byte align Read Only RAW DATA #1 00000000: 02 00 00 00 11 00 09 00 00 00 00 00 0A 56 41 4C .............VAL 00000010: 55 45 53 2E 64 6C 6C 28 00 13 10 07 00 00 00 03 UES.dll(........ 00000020: 00 00 00 00 00 00 00 06 00 00 00 FF 20 12 4D 69 ...........ÿ .Mi 00000030: 63 72 6F 73 6F 66 74 20 28 52 29 20 4C 49 4E 4B crosoft (R) LINK 00000040: 00 . SECTION HEADER #2 .idata$2 name 0 physical address 0 virtual address 14 size of raw data 1AD file pointer to raw data (000001AD to 000001C0) 1C1 file pointer to relocation table 0 file pointer to line numbers 3 number of relocations 0 number of line numbers C0300040 flags Initialized Data 4 byte align Read Write RAW DATA #2 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000010: 00 00 00 00 .... RELOCATIONS #2 Symbol Symbol Offset Type Applied To Index Name -------- ---------------- ----------------- -------- ------ 0000000C DIR32NB 00000000 3 .idata$6 00000000 DIR32NB 00000000 4 .idata$4 00000010 DIR32NB 00000000 5 .idata$5 SECTION HEADER #3 .idata$6 name 0 physical address 0 virtual address C size of raw data 1DF file pointer to raw data (000001DF to 000001EA) 1C1 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers C0200040 flags Initialized Data 2 byte align Read Write RAW DATA #3 00000000: 56 41 4C 55 45 53 2E 64 6C 6C 00 00 VALUES.dll.. COFF SYMBOL TABLE 000 000420FF ABS notype Static | @comp.id 001 00000000 SECT2 notype External | __IMPORT_DESCRIPTOR_VALUES 002 C0000040 SECT2 notype Section | .idata$2 003 00000000 SECT3 notype Static | .idata$6 004 C0000040 UNDEF notype Section | .idata$4 005 C0000040 UNDEF notype Section | .idata$5 006 00000000 UNDEF notype External | __NULL_IMPORT_DESCRIPTOR 007 00000000 UNDEF notype External | VALUES_NULL_THUNK_DATA String Table Size = 0x50 bytes Archive member name at 6E2: VALUES.dll/ 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode FA size correct header end FILE HEADER VALUES 14C machine (x86) 2 number of sections 4100DE6B time date stamp Fri Jul 23 11:46:19 2004 B9 file pointer to symbol table 2 number of symbols 0 size of optional header 100 characteristics 32 bit word machine SECTION HEADER #1 .debug$S name 0 physical address 0 virtual address 41 size of raw data 64 file pointer to raw data (00000064 to 000000A4) 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers 42100040 flags Initialized Data Discardable 1 byte align Read Only RAW DATA #1 00000000: 02 00 00 00 11 00 09 00 00 00 00 00 0A 56 41 4C .............VAL 00000010: 55 45 53 2E 64 6C 6C 28 00 13 10 07 00 00 00 03 UES.dll(........ 00000020: 00 00 00 00 00 00 00 06 00 00 00 FF 20 12 4D 69 ...........ÿ .Mi 00000030: 63 72 6F 73 6F 66 74 20 28 52 29 20 4C 49 4E 4B crosoft (R) LINK 00000040: 00 . SECTION HEADER #2 .idata$3 name 0 physical address 0 virtual address 14 size of raw data A5 file pointer to raw data (000000A5 to 000000B8) 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers C0300040 flags Initialized Data 4 byte align Read Write RAW DATA #2 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00000010: 00 00 00 00 .... COFF SYMBOL TABLE 000 000420FF ABS notype Static | @comp.id 001 00000000 SECT2 notype External | __NULL_IMPORT_DESCRIPTOR String Table Size = 0x1D bytes Archive member name at 818: VALUES.dll/ 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 115 size correct header end FILE HEADER VALUES 14C machine (x86) 3 number of sections 4100DE6B time date stamp Fri Jul 23 11:46:19 2004 D5 file pointer to symbol table 2 number of symbols 0 size of optional header 100 characteristics 32 bit word machine SECTION HEADER #1 .debug$S name 0 physical address 0 virtual address 41 size of raw data 8C file pointer to raw data (0000008C to 000000CC) 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers 42100040 flags Initialized Data Discardable 1 byte align Read Only RAW DATA #1 00000000: 02 00 00 00 11 00 09 00 00 00 00 00 0A 56 41 4C .............VAL 00000010: 55 45 53 2E 64 6C 6C 28 00 13 10 07 00 00 00 03 UES.dll(........ 00000020: 00 00 00 00 00 00 00 06 00 00 00 FF 20 12 4D 69 ...........ÿ .Mi 00000030: 63 72 6F 73 6F 66 74 20 28 52 29 20 4C 49 4E 4B crosoft (R) LINK 00000040: 00 . SECTION HEADER #2 .idata$5 name 0 physical address 0 virtual address 4 size of raw data CD file pointer to raw data (000000CD to 000000D0) 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers C0300040 flags Initialized Data 4 byte align Read Write RAW DATA #2 00000000: 00 00 00 00 .... SECTION HEADER #3 .idata$4 name 0 physical address 0 virtual address 4 size of raw data D1 file pointer to raw data (000000D1 to 000000D4) 0 file pointer to relocation table 0 file pointer to line numbers 0 number of relocations 0 number of line numbers C0300040 flags Initialized Data 4 byte align Read Write RAW DATA #3 00000000: 00 00 00 00 .... COFF SYMBOL TABLE 000 000420FF ABS notype Static | @comp.id 001 00000000 SECT2 notype External | VALUES_NULL_THUNK_DATA String Table Size = 0x1C bytes Archive member name at 96A: VALUES.dll/ 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 2C size correct header end Version : 0 Machine : 14C (x86) TimeDateStamp: 4100DE6B Fri Jul 23 11:46:19 2004 SizeOfData : 00000018 DLL name : VALUES.dll Symbol name : _VCI_Connect Type : code Name type : no prefix Hint : 0 Name : VCI_Connect Archive member name at 9D2: VALUES.dll/ 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 2F size correct header end Version : 0 Machine : 14C (x86) TimeDateStamp: 4100DE6B Fri Jul 23 11:46:19 2004 SizeOfData : 0000001B DLL name : VALUES.dll Symbol name : _VCI_Disconnect Type : code Name type : no prefix Hint : 1 Name : VCI_Disconnect Archive member name at A3E: VALUES.dll/ 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 2D size correct header end Version : 0 Machine : 14C (x86) TimeDateStamp: 4100DE6B Fri Jul 23 11:46:19 2004 SizeOfData : 00000019 DLL name : VALUES.dll Symbol name : _VCI_Dispatch Type : code Name type : no prefix Hint : 2 Name : VCI_Dispatch Archive member name at AA8: VALUES.dll/ 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 2A size correct header end Version : 0 Machine : 14C (x86) TimeDateStamp: 4100DE6B Fri Jul 23 11:46:19 2004 SizeOfData : 00000016 DLL name : VALUES.dll Symbol name : _VCI_Login Type : code Name type : no prefix Hint : 3 Name : VCI_Login Archive member name at B0E: VALUES.dll/ 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 2B size correct header end Version : 0 Machine : 14C (x86) TimeDateStamp: 4100DE6B Fri Jul 23 11:46:19 2004 SizeOfData : 00000017 DLL name : VALUES.dll Symbol name : _VCI_Logout Type : code Name type : no prefix Hint : 4 Name : VCI_Logout Archive member name at B76: VALUES.dll/ 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 2B size correct header end Version : 0 Machine : 14C (x86) TimeDateStamp: 4100DE6B Fri Jul 23 11:46:19 2004 SizeOfData : 00000017 DLL name : VALUES.dll Symbol name : _VCI_Submit Type : code Name type : no prefix Hint : 5 Name : VCI_Submit Archive member name at BDE: VALUES.dll/ 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 2E size correct header end Version : 0 Machine : 14C (x86) TimeDateStamp: 4100DE6B Fri Jul 23 11:46:19 2004 SizeOfData : 0000001A DLL name : VALUES.dll Symbol name : _VCI_Subscribe Type : code Name type : no prefix Hint : 6 Name : VCI_Subscribe Archive member name at C48: VALUES.dll/ 4100DE6B time/date Fri Jul 23 11:46:19 2004 uid gid 0 mode 30 size correct header end Version : 0 Machine : 14C (x86) TimeDateStamp: 4100DE6B Fri Jul 23 11:46:19 2004 SizeOfData : 0000001C DLL name : VALUES.dll Symbol name : _VCI_Unsubscribe Type : code Name type : no prefix Hint : 7 Name : VCI_Unsubscribe Exports ordinal name _VCI_Connect _VCI_Disconnect _VCI_Dispatch _VCI_Login _VCI_Logout _VCI_Submit _VCI_Subscribe _VCI_Unsubscribe Summary C3 .debug$S 14 .idata$2 14 .idata$3 4 .idata$4 4 .idata$5 C .idata$6