PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dickes Problem


Einfachkrank
2004-10-08, 00:04:23
Hallo,

nachdem ich ein älteres Programm mit meiner eigenen DLL, die ich gestern erstellt habe, zum laufen bringen will(die garantiert funktioniert, hab sie schon mit anderen Programmen getestet) spuckt mein Visual C++ 6.0 Compiler folgendes aus:



Linking...
abi_md2loader.obj : error LNK2001: unresolved external symbol "bool __cdecl std::operator!=(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,char const *)" (??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@PBD@Z)
abi_md2loader.obj : error LNK2001: unresolved external symbol "bool __cdecl std::operator!=(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??9std@@YA_NABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@0@Z)
Debug/abi_nuts.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

Hat jemand ne Idee, woran das liegen könnte? Hab hier auch noch einen Link zur kompletten Log Datei: Log Datei (http://www.michael-eberhardt.de/Files/abi_nuts.plg)

MFG Einfachkrank

Crushinator
2004-10-08, 11:41:27
Sieht für mich danach aus, als würden die exportierten Funktionen der DLL eine andere Aufrufkonvention (z.B. stdcall) vom aufrufenden Programm verlangen. ;)

Elemental
2004-10-08, 14:02:30
Diese "unresolved external symbol" Meldungen krieg ich immer, wenn was im .idl nicht mehr zur Definition im .h passt...

Einfachkrank
2004-10-09, 17:15:14
Also, das Problem ist behoben, allerdings sehr merkwürdig.

Ich hatte in meinem Programm nur die Header meiner DLL zum importieren eingebunden und dann noch in einer der Header-Dateien im Programm folgende inkludiert:

fstream, string, vector

Dann hab ich diese drei ebenfalls in meiner DLL-Header eingebunden und hab sie aus der Header des Programmes entfernt und siehe da, es funktioniert. Aber warum? Das macht doch keinen Sinn, oder?

Einfachkrank
2004-10-17, 13:52:07
Servus,

ich hab schon wieder son dämliches Problem...
in der DLL ist folgende Funktion:
typedef unsigned int m3d_reval;
// ...
_DLL m3d_reval m3d_Printf(FILE *file, char *msgstr)
{
if((!file) || (!msgstr)) return M3D_WRONGPARAM;

fprintf(file, msgstr);
fflush(file);

return M3D_OK;
}

Wenn ich nun diese Funktion in einer der Programme, die die DLL verwenden aufrufe, hängt es sich genau bei fprintf auf... Warum? Hat jemand en Vorschlag?

Edit: Gut, ich habe feststellen müssen, dass immer wenn ein Pointer des Typs FILE an eine Funktion in der DLL übergeben wird, die nicht wirklich ankommt und das Programm sich aufhängt. Genau so wenig geht was aus der DLL raus. Wenn ich eine Klasse, die in der DLL deklariert ist anlege, in der eine Variable des Typs FILE* ist und ich will über die Variable etwas in eine geöffnete Textdatei schreiben, dann passiert einfach nichts(zumindest hängt ich das Programm nicht auf).

Hat jemand Vorschläge woran das liegen könnte?

Einfachkrank
2004-10-17, 22:31:19
Servus,

ich hab schon wieder son dämliches Problem...
in der DLL ist folgende Funktion:
typedef unsigned int m3d_reval;
// ...
_DLL m3d_reval m3d_Printf(FILE *file, char *msgstr)
{
if((!file) || (!msgstr)) return M3D_WRONGPARAM;

fprintf(file, msgstr);
fflush(file);

return M3D_OK;
}

Wenn ich nun diese Funktion in einer der Programme, die die DLL verwenden aufrufe, hängt es sich genau bei fprintf auf... Warum? Hat jemand en Vorschlag?

Edit: Gut, ich habe feststellen müssen, dass immer wenn ein Pointer des Typs FILE an eine Funktion in der DLL übergeben wird, die nicht wirklich ankommt und das Programm sich aufhängt. Genau so wenig geht was aus der DLL raus. Wenn ich eine Klasse, die in der DLL deklariert ist anlege, in der eine Variable des Typs FILE* ist und ich will über die Variable etwas in eine geöffnete Textdatei schreiben, dann passiert einfach nichts(zumindest hängt ich das Programm nicht auf).

Hat jemand Vorschläge woran das liegen könnte?
*push*

Einfachkrank
2004-10-18, 16:44:20
:(