Problem beim kompelieren, error LNK2001: unresolved external symbo

qwartz

Mitglied
Hallo,
zunächst mal hab ich lange gegoogelt bevor ich euch nun mit meinem Problem belästige... :-(
Ich versuche mir n kleines Tool zur Weitergabe an meine Web Kunden zu basteln, nach langem herumstöbern schien mir C doch die beste Lösung zu sein, unter Java is das ja noch viel Komplizierter.... :-O
Es geht um mySQL zugriff, ich habe die Anleitung von Dieser Seite benutzt...
Nun hat das ganze schon relativ gut geklappt, nur wenn ich die .exe erstellen will bekomme ich folgende Meldung:
Code:
--------------------Configuration: NEWSQL - Win32 Debug--------------------
Compiling...
NEWSQL.CPP
Linking...
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/NEWSQL.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

NEWSQL.exe - 2 error(s), 0 warning(s)

Ich benutze visual c++

Folgendes hab ich schon Probiert um den Fehler zu beheben:

1. Als WIN32 console....
Ändert sich nur _WinMain@16 in _main ....

2. kleines Testprog kompeliert
....

Die .cpp lässt sich 1a kompelieren nur wenn ich die .exe machen will kommt der Fehler.

Fehlt da wirklich irgendein Symbol?

Eigentlich müsste es doch egal sein ob ich nun command oder windows auswähle?
Da der Code ja momentan noch gar nichts macht?
Code:
#include <stdio.h>
#if defined __WIN32__ || _MSC_VER
#include <windows.h>
#endif
#include "c:\mysql\include\mysql.h"

Danke und Gruss

PS: Ich hoff ich bin im richtigen Thema dafür ... ;-)
 
Was unresolved external bedeutet: Es fehlt eine Deklaration von etwas, in deinem Fall die WinMain selbst.

Ein C/C++-Programm kann nicht einfach leer sein, es muss ein Einsprungpunkt vorhanden sein. Der kann dann leer bleiben, er muss aber da sein.

Einfach eine leere WinMain reinsetzen:

Code:
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPCTSTR, int )
{

  // alles in Ordnung
  return 0;

}

Das sollte dann ausreichen. Die WinMain habe ich eben aus dem Kopf da reingesetzt, falls es Fehler gibt, einfach F1 darüber drücken oder in Google eingeben.
 
Wie soll denn das gehen ohne main?
Wenn die main (oder WinMain) beendet wird, wird doch das Programm entladen, oder?
Was soll das Tool denn machen?
 
Also wenn ich den Quellcode einfüge hab ich eine neue Fehlermeldung:
Code:
C:\Programme\Microsoft Visual Studio\MyProjects\WINSQL\WINSQL.CPP(7) : error C2731: 'WinMain' : function cannot be overloaded
Und das Tool soll letztendlich auf eine SQL Datenbank zugreifen und den Leuten die Möglichkeit geben diese zu Administrieren...
So wie hier beschrieben
Gruss
 
Dann gab's wohl doch schon ne WinMain.
Wie soll der User denn die Aktionen auslösen. Willst du eine grafische Oberfläche oder ein Konsolenmenü?
 
Ja im endeffekt sollte das dann schon Grafisch sein ....
Ich dacht da an sowas wie phpadmin?!
Is natürlich schon recht umfangreich aber da ich bisher nur php gecodet hab wollt ich da eh mal n bissl üben :D
 
Sorry, hatte mich doch vertan:

Ersetze LPCTSTR durch LPSTR.

Die Fehlermeldung besagt, dass die WinMain genauso aussehen muss:

int WinMain( HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow
);

Im Gegensatz zu anderen Funktionen darf diese nicht überladen (overloaded) werden (soll heissen, die Art der Parameter und des Rückgabewertes muss genau passen).

Aber wie oben schon bemerkt wurde, der Code tut nichts. Das Programm startet und beendet sich sofort wieder. Aber das ist ja dann deine Aufgabe ;)
 
Also wenn du schon mit Visual C++ arbeitest und es eh was Grafisches werden soll, dann würde ich empfehlen eine MFC-Anwendung aufzusetzen (z.B. dialogbasiert). Mit Win32 pur ist sowas immer etwas mühselig. Die Klassenbibliothek (MFC) nimmt einem da eine Menge Arbeit ab. Da es nur ein kleines Tool werden soll ist es auch sinnvoll die MFC-Bibliotheken statisch zuzulinken. Das kann man beim Anlegen des Projektes oder später in den Projekteigenschaften einstellen.
 
Darauf wollte ich mit meinen Fragen hinaus.
Ich würde eine dialogbasierte Anwendung vorschlagen. Die ist relativ leicht zu schreiben und ist für solche Tool-Anwendungen ideal.
 
Zurück