Meine sebst erstellte DLL wird nicht ins Projekt eingebunden, wieso?
-
Hi,
Ich habe mir mal eine DLL selber gebastelt mit 4Funktionen drin zum addieren, subtrahieren, multiplizieren und dvidieren. So nun hab ich also die .cpp-Datei kompiliert und habe mir dein entstandene DLL und .lib und dem Debug Ordner des programms Kopiert in das neue Konsolen-Projekt. Da habe ich dann via'
Project->Add to Project->Files... die .lib-Datei geadded, aber irgendwie kann ich trotzdem nicht die Funktionen aus der DLL benutzen und ich hab auch mal geschaut sie wird nicht einmal geladen.Könnt ihr mir sagen wies unter VC++ gemacht wird? Danke!
Gruß Tobi.
-
T0bi schrieb:
Könnt ihr mir sagen wies unter VC++ gemacht wird?
Bist du sicher, dass du im richtigen Forum bist?
-
hmm bin ich nicht ?
-
Gut, daß du uns auch gleich den Quelltext der DLL und die Headerdatei zeigst, damit wir einen Anhaltspunkt haben

Und ja, du bist im falschen Forum. Das ist weder VC++- noch C++Builder-spezifisch und gehört nach WinAPI.
-
k dann möcht ich es verschieben lassen, und ich glaube kaum das quelltext zur beantwortung der frage von nöten ist. da ich nur wissen wollte wie man die DLL ins project einbindet in VC++ 6.0. und evtl wie ich ne realse version bekomme und net immer ne debbug.
Gruß Tobi.
-
T0bi schrieb:
und ich glaube kaum das quelltext zur beantwortung der frage von nöten ist.
Er wäre nützlich, um dir sagen zu können, was du falsch machst. Natürlich könnten wir dir alternativ auch die Arbeit abnehmen, selbst nach einem DLL-Tutorial zu suchen.

T0bi schrieb:
und evtl wie ich ne realse version bekomme und net immer ne debbug.
Indem du in den Projektoptionen auf "Release" umstellst?
-
T0bi schrieb:
Hi,
So nun hab ich also die .cpp-Datei kompiliert und habe mir dein entstandene DLL und .lib und dem Debug Ordner des programms Kopiert in das neue Konsolen-Projekt.
Gruß Tobi.Könnte es sein, dass du in dem Programm, dass die dll nutzen soll, nicht die header-Datei der DLL includest?
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum VCL (C++ Builder) in das Forum MFC (Visual C++) verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
hmm das könnte es sein

aber ich habe mal die header datei ins Project eingebunden, doch dann hat er aufeinmal bei der deklaration der funktionen im header der dll gemeckert.--------------------Configuration: TestIt - Win32 Debug-------------------- Compiling... StdAfx.cpp c:\programme\microsoft visual studio\myprojects\testit\test_dll.h(22) : error C2146: syntax error : missing ';' before identifier 'fAdd' c:\programme\microsoft visual studio\myprojects\testit\test_dll.h(22) : fatal error C1004: unexpected end of file found Error executing cl.exe. TestIt.exe - 2 error(s), 0 warning(s)@Release tjo wo da stell ich das den ein? wenn ich bei Settings for: Debbug auf Release stelle passiert trotzdem nichts -.-
EDIT:
Okay habs jetzt endlich selber rausgefunden wie man das mit dem VC++ 6.0 macht, trotzdem wäre das andere noch zu klären.und zur DLL zurück:
Hier der Header file:/****************************************************************** File : Test_DLL.h Remarks : This file contains all prototypes. ******************************************************************/ #ifdef __cplusplus #define EXPORT extern "C" __declspec( dllexport ) #else #define EXPORT __declspec( dllexport ) #endif //--- Includes ---------------------------------------------------- //--- Prototypes -------------------------------------------------- EXPORT int CALLBACK fAdd( int, int ); EXPORT int CALLBACK fDif( int, int ); EXPORT int CALLBACK fMul( int, int ); EXPORT int CALLBACK fDiv( int, int ); //--- EXIT --------------------------------------------------------Die .cpp-Datei von der DLL
//--- Includes --------------------------------------------------- #include "stdafx.h" //--- Globals ---------------------------------------------------- //--- Prototypes ------------------------------------------------- //--- MainDLL --------------------------------------------------- int WINAPI DllMain( HANDLE hModule, DWORD dwReason, LPVOID lpReserved ) { return TRUE; } //--- Definitons ------------------------------------------------ EXPORT int CALLBACK fAdd( int a, int b ) { return( a + b ); } EXPORT int CALLBACK fDif( int a, int b ) { return( a - b ); } EXPORT int CALLBACK fMul( int a, int b ) { return( a * b ); } EXPORT int CALLBACK fDiv( int a, int b ) { int temp; if( b == 0 ) { temp = 0; } else { temp = a / b; } return temp; } //--- EXIT ------------------------------------------------------so und nun weiter?
Gruß Tobi.
-
Wat den jatzt geb ich euch auf wunsch den code und keiner antwortet mir

-
Also ich denke ich hab alles richtig gemacht aber trotzdem sagt er das ich irgendwoe im DLL header vor meiner funktion nen ';' vergessen hab... kann doch aber gar net sein
-
Wie ist denn CALLBACK definiert? In deinem Hauptprogramm ist es anscheinend falsch definiert und führt zu besagtem Fehler!
Und außerdem sollte beim Importieren der Library nicht EXPORT benutzt werden, sondern __declspec( dllimport ) (bzw. kann glaube ich auch ganz entfallen).
Normalerweise regelt man das mittels eines Makros, welches nur beim Erstellen der Library mitgegeben wird, z.B.
#if DLL_EXPORT // <- Name des Makros, das du nur bei der DLL (in den Projektoptionen) angibst #define EXPORT extern "C"__declspec( dllexport ) #else #define EXPORT // __declspec( dllimport ) // s. Anmerkung oben #endif
-
oh... kann es sein das CLLBACK die header datei windows.h verlangt?
-
joa.. es lag allerdings daran das ich vergessen hatte windows.h zu includieren... aber wieso werden mir die Parameterinfos net angezeigt ?