C++ Compiler/Linker Problem

bripdererste

Grünschnabel
Morgen erstmal,
ich benutze Win2k und dem schon etwas älteren Borland Turbo 4.5 Compiler.
Ich versuche zur Zeit eine bereits vorhandenes Projekt zu compilieren.
Dabei handelt es sich um 4 C Klassen und einer Import Libary. Es soll eine Winapplication
erzeugt werden die zur Laufzeit auf eine vorgegebene dll zugreifen soll.

Beim erzeugen (Compilieren und Linken) bekomm ich Linker Errors

Linking ..\..\ao_cw.exe:
Linker Error: Undefined symbol INITSW in module PCIDATAW.C
Linker Error: Undefined symbol SLOTINQUIRE in module FINDW.C
Linker Error: Undefined symbol REGISTERCLIENT in module AO_CW.C
.....

Es sind alle Methoden die in den Classen auf die dll zugreifen sollen.
Der Fehler liegt warscheinlich daran das beim Compilieren die Gross-
Kleinschreibung geändert wird allerdings ist mir absolut schleierhaft wieso er das
macht, bzw wie ich das ändern kann . Im orginal Source heißen die "symbole" InitSW , SlotInquire, RegisterClient
Ebenso in der dll.

Wenn ich beim Linker case sensitive für import export deaktiviere wird die Applikation erzeugt allerdings kann sie nicht gestartet werden. (Kein wunder)

Ich sitz an dem Kram jetzt schon ne ganze weile und weiss echt nicht mehr weiter.
Liegt warscheinlich nicht zuletzt daran das ich absoluter c++ Anfänger bin.

Hoffe ihr könnt mir helfen.

Gruss
 
Hallo,

um auf Funktionen in einer .dll Datei zuzugreifen muss man dem Linker immer die passende .lib Datei übergeben
 
Hallo,
das habe ich meiner Meinung nach getan. Bin allerdings jetzt schon auf den Gedanken gekommen das das ganze garnicht gehen kann. Der Turbo c++ ist für nen 3.1 windows ausgelegt uns arbeitet glaub ich auf 16 Bits wobei die dll auf 32 Bit ausgelegt ist. Werd mein Glück mal mit einem neueren Compiler versuchen.
 
moin


Windows 3.1 konnte auch schon 32Bit, also so tun als ob....

Aber dein Problem hat damit nichts zu tun!
Du greifst halt auf Funktionen zu die nicht da sind, bzw. der Compiler findet sie nicht.


mfg
umbrasaxum
 
umbrasaxum hat gesagt.:
bzw. der Compiler findet sie nicht.

Besser gesagt der Linker findet sie nicht, denn der ist für so etwas da.
Wichtig beim arbeiten mit dll Dateien ist auch, dass die Funktionen so definiert sind, dass der complier erkennt, dass es eine Funktion einer dll Datei ist. ( extern )
 
Moin,
jo es scheint so gewesen zu sein das die *.lib Datei nicht richtig gefunden wurde. hab es mit der Turbo C++ IDE auch nicht mehr hin bekommen. Hab mich jetzt etwas mit dem Borland
Compiler 5.5 beschäftigt und das ganze via Console compiliert. Ging anfänglich auch nicht aber nachdem ich den Aufruf des Linker einigermassen verstanden hab klappt das Linken jetzt auch richtig.
So jetzt hab ich ne Anwendung, die wenn ich sie ausführen will mir nen Fehler wieder gibt
"Keine gültige Win32 Anwendung" :/

Werd euch Montag den Compiler Linker Optionen noch mal posten (Hab sie leider nur auf dem Rechner auf der Arbeit)

Danke erstmal für eure Antwort.

Gruss brip
 
Hallo,

ich würde dir empfehlen mit Dev-c++ zu arbeiten. Dev-c++ macht solche Sachen ohne irgendwelche großartigen Einstellungen :-)
 
Moin,

hab mir das Tool Dev C++ mal geladen und ausprobiert. Allerdings hab ich da erstmal wieder die gleichen Probleme wie anfänglich mit den anderen Compilern. Von da her werd ich es doch erstmal weiter den Borland C Compiler nutzen.
Momentan mit dem Fehler das die erstellte .exe keine gültige Win32 Anwendung ist :/

Hier mal meine Aufrufe für den Borland C++ 5.5.1. Vielleicht wisst ihr ja weiter

bcc32 -c -4 ao_cw.c

ilink32 -c -Lc:\programme\eclipse\workspace\lib -jc:\programme\eclipse\workspace\ao_cw\worksp\self\simple ao_cw.obj cw32i.lib ipci_w32.lib
 
Moin,

so ich hab jetzt Zeit ohne Ende in dieses Simple Projekt gesteckt und nichts ist bei raus gekommen. Nur das ich zu der Erkenntniss gekommen bin das ich C / C++ nicht mag, und jetzt alle erdenklichen Fehlermeldungen kenne.
Ich hoffe (für meine Ego) das das ganze nicht an mir bzw den Compilern lang die ich benutzt habe sondern an der Source die mir gestellt wurde. Wenn einer von Euch vielleicht etwas Zeit bzw Lust hat hab ich den "meiner Meinung nach" nötigen Source
mal online gestellt.
http://www.gkzn.de/brip/ao_cw.tar

Ich habs satt. Danke so weit für Eure Hilfe
Gruss
Brip

P.S.:Die Source ist für eine ISA Messkarte. Bei der "Treiber" Installation wurden die und andere mit auf die Platte kopiert.
 
Zurück