AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Statisches linken einer C-Lib in ein Delphi Projekt
Thema durchsuchen
Ansicht
Themen-Optionen

Statisches linken einer C-Lib in ein Delphi Projekt

Ein Thema von static_cast · begonnen am 23. Jul 2008 · letzter Beitrag vom 28. Jul 2008
Antwort Antwort
Seite 1 von 2  1 2      
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#1

Statisches linken einer C-Lib in ein Delphi Projekt

  Alt 23. Jul 2008, 19:14
Hallo,

gleich zum Thema, ich sitze schon seit zwei Tagen an einem Problem, und zwar versuche ich Lua statisch zu linken. Ich habe schon diverse Projekte gesehen wo das auch der Fall war (SQLite,PCRE,PNGLib etc etc) aber inzwischen bin ich an einem Punkt angelangt wo ich mich frage ob das alles so korrekt ist und ob es auch der richtige Weg ist wie ich da vorgehe.

Ich hatte mir das SQLite Projekt als Vorlage genommen, nur bekomme ich beim erstellen jedes mal eine neue Fehlermeldung über eine externe Ref. die nicht gefunden wurde (E2065 Unsatisfied forward or external declaration: ....). Die Obj-Files hole ich mir per tlib.exe aus der cw32.lib wie es in dem SQLite HowTo beschrieben wurde, nur nimmt das irgendwie kein Ende, und es kommen immer wieder Rekursionen vor.

Gibt es da irgendeine elegante Lösung für? Ich habe das Projekt mal mit angehängt falls es sich jemand anschauen will.


Viele Grüße
Daniel
Angehängte Dateien
Dateityp: zip luastatic_856.zip (344,0 KB, 11x aufgerufen)
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#2

Re: Statisches linken einer C-Lib in ein Delphi Projekt

  Alt 23. Jul 2008, 22:28
Da hast du dir ja ein riesen Projekt aufgehalst

Die Fehlermeldung kommt daher, dass du Prozeduren und/oder Funktionen mit external definiert hast, die der Linker jedoch nicht in den obj-Dateien finden kann. D.h. es gibt keinen Code dafür, nur die Deklaration.
Ich vermute du hast die obj Dateien nicht vollständig erzeugt.

Suche mal nach Rudy Velthuis. Er erklärt auf seiner Seite, wie das funktioniert mit Obj-Dateien einbinden in Delphi.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#3

Re: Statisches linken einer C-Lib in ein Delphi Projekt

  Alt 23. Jul 2008, 23:41
Naja das Bezieht sich aber eher auf die C standard Funktionen, er meckert ja keine exports oder irgendwas von Lua an.
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Statisches linken einer C-Lib in ein Delphi Projekt

  Alt 23. Jul 2008, 23:46
Moin!

Aber die schon von dir eingebundenen OBJ Dateien benutzen bzw. referenzieren diese Funktionen und finde diese entsprechend nicht, da diese nicht in deinen OBJ vorhanden sind.

MfG
Muetze1
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#5

Re: Statisches linken einer C-Lib in ein Delphi Projekt

  Alt 23. Jul 2008, 23:49
Es ist dasselbe wie :

Delphi-Quellcode:
unit xy;
interface

procedure Bla;

implementation
end.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#6

Re: Statisches linken einer C-Lib in ein Delphi Projekt

  Alt 24. Jul 2008, 00:40
Zitat von Muetze1:
Aber die schon von dir eingebundenen OBJ Dateien benutzen bzw. referenzieren diese Funktionen und finde diese entsprechend nicht, da diese nicht in deinen OBJ vorhanden sind.
Ja aber soll ich denn jetzt die komplette C-Lib exportieren und als Obj einbinden, das kann doch nicht die Lösung sein, ist doch in dem SQLite Projekt auch nicht gemacht wurden.

Gibt es da vielleicht eine andere Compiler-Option von der ich nichts Weiß um so etwas mit einzubinden also für die Lua-Lib?
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#7

Re: Statisches linken einer C-Lib in ein Delphi Projekt

  Alt 24. Jul 2008, 10:47
Dann musst du die Deklaration entfernen, die du nicht in den obj Dateien hast.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#8

Re: Statisches linken einer C-Lib in ein Delphi Projekt

  Alt 26. Jul 2008, 08:49
Also wenn ich das richtig sehe verwendet die Lua lib folgende Standard-Calls die nicht aufgelößt werden können:

Zitat:
__huge_dble
__streams
_strlen
__ftol
_floor
_pow
_strchr
_longjmp
_exit
_setjmp
_iscntrl
_localeconv
_isdigit
_isalnum
_isspace
_isalpha
_strtod
_strtoul
_sprintf
_strncpy
_strcpy
_strcat
_strcspn
_strncat
_memcpy
_memcmp
__lstrcoll
_strcmp
_strstr
_fread
_strerror
___errno
_fopen
__fgetc
_freopen
_ungetc
_fclose
_free
_realloc
_fprintf
_fputs
_fgets
__pclose
__popen
_tmpfile
_fscanf
_clearerr
_fwrite
_fseek
_ftell
_setvbuf
_fflush
_fabs
_sin
_sinh
_cos
_cosh
_tan
_tanh
_asin
_acos
_atan
_atan2
_ceil
_fmod
_modf
_sqrt
_log
_log10
_exp
_frexp
_ldexp
_rand
_srand
GetModuleFileNameA
_strrchr
GetLastError
FormatMessageA
FreeLibrary
LoadLibraryA
GetProcAddress
_getenv
_system
_remove
_rename
_tmpnam
_clock
_time
_gmtime
_localtime
_strftime
_mktime
_difftime
__lsetlocale
__ltolower
__ltoupper
_islower
_ispunct
_isupper
_isxdigit
_memchr
_strpbrk
__turboFloat
Sollte ich einfach versuchen die simplen davon nachzubilden? Ich hab so das Gefühl sobald ich eine Obj-File mit einlinke, die diese Funktion beinhaltet, brauch ich auch wieder zich andere wegen den Abhängigkeiten. Das ist doch ein Teufelskreis...
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
new32

Registriert seit: 10. Mai 2005
160 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Statisches linken einer C-Lib in ein Delphi Projekt

  Alt 26. Jul 2008, 09:41
Code:
GetModuleFileNameA
GetLastError
FormatMessageA
FreeLibrary
LoadLibraryA
GetProcAddress
kommen aus windows-bibliotheken

die anderen solltest du aus msvcrt.dll importieren können:

Delphi-Quellcode:
function _strlen(const Str: PChar): Cardinal; cdecl;
  external 'msvcrt.dllname 'strlen';
~?&/%§$§%\&?~
8)
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Statisches linken einer C-Lib in ein Delphi Projekt

  Alt 26. Jul 2008, 11:55
was hast du eigentlich genau vor? willst du ohne jegliche DLLs auskommen oder willst du nur auf die DLL-Funktionen zugreifen können?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz