WinMain to funkcja, która "zastępuje" domyślny główny punkt wejścia "main".C++: Implementuj niestandardową funkcję główną
Użytkownik może określić swój główny punkt wejścia jak
int WINAPI WinMain(...) { }
Jak to rodzaj enkapsulacji zrobić?
Cóż, najprawdopodobniej, w pewnym momencie wygląda to tak:
int main() // This must be defined somewhere in windows.h
{
return WinMain(...);
}
Pytanie: W jaki sposób można osiągnąć taki hermetyzację moje własne, które następnie wywołuje WinMain? Uwaga: Biblioteka które zrobiłem to DLL, tak będzie wyglądać następująco:
// 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
}
Problem jednak znaczy, że DLL nie „wiem” funkcję Main()
i dlatego rzuca „nierozwiązany symbol zewnętrzny "błąd kompilacji. Więc jak mogę to hermetyzować?
Nadal mam nierozwiązany zewnętrzny, nawet z 'extern" C "'. Czy to dlatego, że używam WinMain jako wewnętrznego punktu wejścia zamiast głównego tak jak Ty? – bytecode77
@DevilsChild: Trudno powiedzieć, co robisz. Jeśli twoim punktem wejścia jest 'WinMain' - wywołaj swój własny główny z' WinMain'. Jeśli jest to po prostu 'main()' - wywołaj go z 'main()'. Najpierw zmodyfikuj kod, aby skompilować zmiany bez zmian, a następnie wprowadź zmiany i zobacz, co łamie. Lub przynajmniej postaw minimalny kompletny przykład demonstrujący twój problem ... w przeciwnym razie trudno jest debugować to, co robisz. –
Wygląda na to, że jest problem ze strukturą dołączania. Poniżej zamieszczam kilka bardzo minimalistycznych kodów: http://dev-ch.com/files/a8dce463-65a2-54fe-ef43-c9d4160dea95/mylibrarywithcustommain.zip Kiedy nie dodaję "ExampleClass.h", to działa. – bytecode77