linkkeri kirjoitti:
1>------ Build started: Project: poker, Configuration: Debug Win32 ------
1>Linking...
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
1>C:\Documents and Settings\gfintne\My Documents\Visual Studio 2008\Projects\poker\Debug\poker.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:\Documents and Settings\gfintne\My Documents\Visual Studio 2008\Projects\poker\poker\Debug\BuildLog.htm"
1>poker - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Yritän kääntää koodia Visual C++ Express editionilla työkoneessani. Kotikoneella kääntyy mainiosti mutta täällä vetäisee tuollaisen. En edes tiedä mihin tiedostoon nuo viittaa(mikä ihme MSVCRTD.lib edes on?) joten oletan että on windowsin omia mutta miksi ne nyt alkaisi temppuilemaan?
Mitään aavistusta minkätakia tämä reistailee?
MSVCRTD.lib on arvatenkin Microsoft Visual C Run-time -kirjaston debug-versio.
Ohjelmassasi ei ilmeisesti ole main-funktiota, vaikka kääntäjä sellaista kaipaa.
Hmm. Kyllä täällä tälläinen löytyy:
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {
Ja samainen koodi kääntyy kyllä kotona ilman linkkausongelmia.
WinMain ja main ovat kaksi aivan eri asiaa. Valitse IDEstäsi Windows-projekti Console-projektin sijaan, jos WinMainia käytät. Tätä voinee jostain projektin asetuksistakin muokata. Henkilökohtaisesti en näe mitään syytä käyttää WinMainia, se vain mutkistaa useimpia asioita (ja on Windows-spesifinen outous, mikä ei minua oikein innosta).
Metabolix kirjoitti:
Henkilökohtaisesti en näe mitään syytä käyttää WinMainia, se vain mutkistaa useimpia asioita
Jaah. int main(...) blaa blaa blaa sallii edelleen windowsin graaffisen sovelluksen teon? Noh tuollaisen se VC++ express edition loi automaattisesti kun tein win32 sovelluksen pohjan joten oletin sen soveltuvan käyttöön.
Toki. Konsoli-ikkunan olemassaoloa voi luultavasti säätää projektin asetuksista, tai jos sellainen kuitenkin ilmestyy, sen voi sulkea FreeConsole-funktiolla.
Aihe on jo aika vanha, joten et voi enää vastata siihen.