WinMain ist eine Funktion, die den Standardhaupteintrittspunkt "main" ersetzt.C++: Implementieren benutzerdefinierter Hauptfunktion
Der Benutzer kann dann seine Haupteintrittspunkt wie
definierenint WINAPI WinMain(...) { }
Wie geschieht diese Art der Kapselung?
Nun, wahrscheinlich irgendwann sieht es wie folgt aus:
int main() // This must be defined somewhere in windows.h
{
return WinMain(...);
}
Frage: Wie kann ich eine solche Verkapselung von meinem eigenen zu erreichen, die dann WinMain ruft? Hinweis: Die Bibliothek, die ich gemacht eine DLL ist, so wird es so aussehen:
// This is the minimal code for the application which uses 'MyLibrary'
#pragma comment(lib, "MyLibrary.lib")
include "MyLibrary.h"
void Main(MyCustomParameter *params)
{
// Write user code here
}
Das Problem ist jedoch, dass die DLL nicht ‚wissen‘ die Main()
Funktion und deshalb wirft eine ‚ungelöste externer symbol 'kompilierfehler. Wie kann ich es so einkapseln?
Ich bekomme immer noch eine ungelöste externe, auch mit 'extern" C ". Liegt es daran, dass ich WinMain anstelle von main als inneren Einstiegspunkt nutze? – bytecode77
@DevilsChild: Es ist schwer zu sagen, was Sie tun. Wenn Ihr Einstiegspunkt 'WinMain' ist, rufen Sie Ihre eigene Hauptdatei von' WinMain'. Wenn es nur 'main()' ist - rufe es von 'main()'. Lassen Sie den Code zuerst ohne Änderungen kompilieren und ändern Sie dann, was passiert. Oder stellen Sie wenigstens ein minimales vollständiges Beispiel, das Ihr Problem demonstriert ... sonst ist es schwierig zu debuggen, was Sie tun. –
Offenbar ist es ein Problem mit der Include-Struktur. Ich habe hier einen sehr minimalistischen Code zusammengestellt: http://dev-ch.com/files/a8dce463-65a2-54fe-ef43-c9d4160dea95/mylibrarywithcustommain.zip Wenn ich 'ExampleClass.h' nicht einbeziehe, funktioniert es. – bytecode77