Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

1

24.02.2006, 21:02

Lib wird nicht erzeugt

Hi,

damit ich nicht immer alle Funktionen, die ich brauche in meine Projekte reinschreiben(kopieren) muss habe ich mir mal mit Visual C++ 2005 Express ne dll mit dem folgenden Code geschrieben(ist noch nicht viel drin):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
using namespace std;
void dllWriteToLog(char text[1024]);

void dllWriteToLog(char text[1024])
{
    fstream log;
    log.open("log.txt", ios::out|ios::app);
    log << text;
    log.close();
}


Bein kompilieren treten keine Fehler auf und es wird auch eine DLL erzeugt . Das problem ist, dass keine Lib erzeugt wird, mit der ich dann des ganze linken kann.
Kann mir hier jemand sagen(schreiben), was ich da machen muss??

Schon mal danke für alle Antworten

Anonymous

unregistriert

2

24.02.2006, 21:32

Deine DLL Dynamisch linken? Dafür ist sie doch da?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

24.02.2006, 21:45

@Patrick: Du weißt doch, dass der Compiler trotzdem eine Lib-Datei erzeugt?!

@Faule Socke: Deine DLL müsste eigentlich so gut wie leer sein. Deine Funktion "dllWriteToLog" wird mit Sicherheit nicht in die DLL geschrieben werden, denn dazu müsstest Du sie mit __declspec(dllexport) deklarieren.

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

4

25.02.2006, 15:00

@David:
Das habe ich gerade mal schnell gemacht. sollte dann so aussehen oder?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
#include <fstream>
using namespace std;
void __declspec(dllexport) dllWriteToLog(char text[1024]);

void __declspec(dllexport) dllWriteToLog(char text[1024])
{
    fstream log;
    log.open("log.txt", ios::out|ios::app);
    log << text;
    log.close();
}


Aber wenn ich dann eine Consolenanwendung schreiben will, die dann die Funktion verwendet:

C-/C++-Quelltext

1
2
3
4
5
6
#include <fstream>

int main()
{
    dllWriteToLog("Test");
}


Kommt immer der Fehler:

------ Build started: Project: test_dll_test, Configuration: Release Win32 ------
Compiling...
main.cpp
.\main.cpp(5) : error C3861: 'dllWriteToLog': identifier not found
Build log was saved at "file://d:\Projects\test_dll_test\Release\BuildLog.htm"
test_dll_test - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Was muss ich dann machen, damit des geht? ???

Anonymous

unregistriert

5

25.02.2006, 15:14

Faule Socke
Ist klar wenn die Importierung fehlt! Woher soll dein Programm denn wissen "Klasse, und woher soll ich diese Funktion nehmen? Denkt der Doof etwa ich kann gedanken lesen??"

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

6

25.02.2006, 15:17

Zitat von »"nix da"«

Faule Socke
Ist klar wenn die Importierung fehlt! Woher soll dein Programm denn wissen "Klasse, und woher soll ich diese Funktion nehmen? Denkt der Doof etwa ich kann gedanken lesen??"


Und wie muss ich des mit der Importierung machen??

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

8

25.02.2006, 16:12

Zitat von »"David Scherfgen"«

Mit dllimport


Hääää ??? ??? ??? des versteh ich net!!!

Anonymous

unregistriert

9

25.02.2006, 17:19

Faule Socke
Damn. Geh auf die MSDN und gib mal DLL ein oder LoadLibrary oder "Import DLL Functions" oder sonst was. Ist das denn so schwer auf die MSDN zu gehen?

Faule Socke

Community-Fossil

  • »Faule Socke« ist der Autor dieses Themas

Beiträge: 1 915

Wohnort: Schreibtischstuhl

  • Private Nachricht senden

10

25.02.2006, 19:14

Steht dazu auch was in "3D Spieleprogramierung" drin, und wenn auf welcher Seite??

Werbeanzeige