Brauche dringest Hilfe bei DLL Kompilierung (Einstiegspunkt nicht gefunden)
-
Hi Coder,
ich hab da dringenst eine Frage. Heute abend soll die software raus gehen und ich muss eigentlich nur noch die seriennummer prüfen. ich benutze install shield und die vorlage sieht mir nach einer visual c++ datei aus. in der software selber muss ich nur angeben wie die datei heißt und wie die prüfende funktion heißt. der bcb kompiliert sie ohne probleme aber die software sagt mir immer einstiegspunkt nicht gefunden. ich denke mal der einstiegspunkt sollte ja hier ValidateSN heißen ? das beispiel gab es als source sowie kompiliert als dll. die kompilierte version von dennen funtzt aber wenn ich nun ohne änderungen einfach die dll kompiliere und prüfen will kommt wie gesagt immer die meldung einstiegspunkt nicht gefunden. muss ich da auf ihrgendwas achten oder kann ich denn visual c++ source ev. garnicht in bcb kompilieren ? woran kann es denn liegen das es nicht geht ????
danke
hier der source von install shield:
// ValidateSN.cpp : Defines the entry point for the DLL application. // // Funktiondeklaration __declspec (dllexport) ValidateSN(); #include "stdafx.h" #include <tchar.h> #include <stdlib.h> #include "ValidateSN.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } LONG WINAPI ValidateSN(HWND hwnd, LPSTR szSrcDir, LPSTR szSupport, LPSTR szSerialNum, LPSTR szDbase) { //Copy serial number to temp variable before parsing TCHAR szTemp[255]; _tcscpy(szTemp, szSerialNum); //Get individual fields of the serial number (tokens separated by '-' chracter) LPSTR szField1 = _tcstok( szTemp, TOKEN_SEPERATOR ); LPSTR szField2 = _tcstok( NULL, TOKEN_SEPERATOR ); LPSTR szField3 = _tcstok( NULL, TOKEN_SEPERATOR ); #ifdef _DEBUG //Display Debug information CHAR szTmp[1024]; wsprintf(szTmp, "szSerialNum=%s. \nField #1=%s \nField #2=%s \nField #3=%s", szSerialNum, szField1, szField2, szField3); MessageBox(GetFocus(), szTmp, "Serial Number Debug Window", MB_OK|MB_SYSTEMMODAL); #endif //Validate three fields in this example if (ValidateField1(szField1) != VALIDATION_SUCCESS) { #ifdef _DEBUG //Display Debug information MessageBox(GetFocus(), szField1, "Field #1 Validation Failed", MB_OK|MB_SYSTEMMODAL); #endif return VALDIATION_FAILED; } else if (ValidateField2(szField2) != VALIDATION_SUCCESS) { #ifdef _DEBUG //Display Debug information MessageBox(GetFocus(), szField2, "Field #2 Validation Failed", MB_OK|MB_SYSTEMMODAL); #endif return VALDIATION_FAILED; } else if (ValidateField3(szField3) != VALIDATION_SUCCESS) { #ifdef _DEBUG //Display Debug information MessageBox(GetFocus(), szField3, "Field #3 Validation Failed", MB_OK|MB_SYSTEMMODAL); #endif return VALDIATION_FAILED; } else return VALIDATION_SUCCESS; } LONG ValidateField1(LPSTR szField1) { //First field must be the string 'Field1' if (0 == _tcsicmp(szField1, SERIALNUM_FIELD1)) return VALIDATION_SUCCESS; else return VALDIATION_FAILED; } LONG ValidateField2(LPSTR szField2) { long lNumToValidate = atoi (szField2); //Second field must be a multiple of 5 if ((lNumToValidate % 5) == 0) return VALIDATION_SUCCESS; else return VALDIATION_FAILED; } LONG ValidateField3(LPSTR szField3) { //Don't do anything - accept all values in third field return VALIDATION_SUCCESS; }
-
Du brauchst im Porojekt noch eine Datei "ValidateSN.def"
Darin muß stehen:
LIBRARY ValidateSN EXPORTS ValidateSN @1
-
hab ich da steht:
LIBRARY "ValidateSN" EXPORTS ValidateSN @1
bis auf die "" der selbe code wie bei dir,
dennoch will er nicht ?
muss ich die datei ihrgendwie miteinbinden oder macht er das selber wenn diese im gleichen verzeichniss liegt ???
-
unter MSVC 6.0 mußt du die Datei einbinden mit: Arbeitsbereich -> Dateien -> Quellcodedateien -> (rechtsklick) Dateien zu Ordner hizufügen.
Und laß die Anführungszeichen mal weg.
-
hab die "" weggelassen, geht dennoch nicht