Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: WinAPI ::  Haufen Fragen und keine Ahnung von DLLs ...     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
?.?.?
Unregistrierter




Beitrag ?.?.? Unregistrierter 10:13:09 12.03.2010   Titel:   Haufen Fragen und keine Ahnung von DLLs ...            Zitieren

In letzter Zeit habe ich ausschließlich in C# programmiert, wollte jetzt aber meiner ersten Programmiersprache C++ wieder mehr Zeit widmen und habe natürlich(!) als einfaches Wiedereinführungsprojekt eine DLL erstellen wollen, die ich vielleicht noch in ein bestehendes C#-Projekt einbinden kann. Doch da es (wie gesagt) eine Weile her ist, dass ich das letzte Mal in C++ programmiert habe, habe ich schon die Hälfte vergessen.

Das hier ist meine Beispiel-DLL:
C/C++ Code:
#include <iostream>
void __dcelspec(dllexport) PrintString(char* MyString){std::cout<<MyString<<'\n';std::cin.get();}
C/C++ Code:
#include <iostream>
void __dcelspec(dllexport) PrintString(char* MyString){std::cout<<MyString<<'\n';std::cin.get();}
C/C++ Code:
#include <iostream>
void __dcelspec(dllexport) PrintString(char* MyString){std::cout<<MyString<<'\n';std::cin.get();}


Das hier die Schnittstelle (Deklaration, Einbindung und so weiter):
C/C++ Code:
void __dcelspec(dllimport) PrintString(char* MyString);

int main()
{
    PrintString("Juhu");
    return 0;
}
C/C++ Code:
void __dcelspec(dllimport) PrintString(char* MyString);

int main()
{
PrintString("Juhu");
return 0;
}
C/C++ Code:
void __dcelspec(dllimport) PrintString(char* MyString);

int main()
{
    PrintString("Juhu");
    return 0;
}


So funktioniert es aber nicht!

Erstes Problem: Heißt es im DLL-Quellcode export oder import?
Zweites Problem: Ich wußte mal, dass ich mittels einer pragma-Direktive die *.lib der DLL einbinden muss (korrigiert mich, wenn ich falsch liege). Aber ich habe vergessen, welche das ist, und die Syntax ebenso.
Drittes Problem: Was mache ich, wenn ich das Ganze in eine Klasse verpacken will? Ich erinnere mich noch an:

C/C++ Code:
class __dcelspec(dllexport) MyClass
{
public:
    void __dcelspec(dllexport) PrintString(char* MyString){/*...*/}
};
C/C++ Code:
class __dcelspec(dllexport) MyClass
{
public:
void __dcelspec(dllexport) PrintString(char* MyString){/*...*/}
};
C/C++ Code:
class __dcelspec(dllexport) MyClass
{
public:
    void __dcelspec(dllexport) PrintString(char* MyString){/*...*/}
};


, aber da kann ich mich auch kolossal irren. Ich verwende Visual Studio 2005.

Ich habe zu spät gemerkt, dass ich zuerst im falschem Forum war (Dos und so), deshalb ist dieser Thread eine kleine Kopie ...
Jockelx
Mitglied

Benutzerprofil
Anmeldungsdatum: 18.12.2009
Beiträge: 499
Beitrag Jockelx Mitglied 10:33:31 12.03.2010   Titel:              Zitieren

Das Schlüsselwort heisst schonmal '__declspec' und nicht '__dcelspec'.
C++ Forumbot
Forumbot

Benutzerprofil
Anmeldungsdatum: 29.02.2004
Beiträge: 15806
Beitrag C++ Forumbot Forumbot 11:04:41 12.03.2010   Titel:              Zitieren

Dieser Thread wurde von Moderator/in evilissimo aus dem Forum C++ in das Forum WinAPI verschoben.

Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?


Dieses Posting wurde automatisch erzeugt.

_________________
Besuchen Sie unsere Bücherecke.
http://www.c-plusplus.de/bucher.php
Mit jeder Bestellung unterstützen Sie das Forum.
Langi
Unregistrierter




Beitrag Langi Unregistrierter 13:34:47 12.03.2010   Titel:              Zitieren

Die Bibliothek bindest du mittels
C/C++ Code:
#pragma comment(lib,"deinedatei.lib")
C/C++ Code:
#pragma comment(lib,"deinedatei.lib")
C/C++ Code:
#pragma comment(lib,"deinedatei.lib")

ein.

Da ich vom handy aus schreibe, kann ich dir den Rest gerade nicht beantworten. Ach ja, in den source der dll kommt das dllexport, ja.

Mfg
berniebutt
Mitglied

Benutzerprofil
Anmeldungsdatum: 12.11.2007
Beiträge: 2082
Beitrag berniebutt Mitglied 12:37:33 13.03.2010   Titel:              Zitieren

Vielleicht bist du hier im WinApi-Forum auch falsch, wenn du für eine Konsolen-Anwendung eine DLL machen willst. Für eine Windows-Anwendung bist du hier schon richtig.

_________________
http://berniebutt.npage.de
C/C++ Forum :: WinAPI ::  Haufen Fragen und keine Ahnung von DLLs ...   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.