Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  4 972
Sliter litt med å få til instillingene i Visual Studio 2008.

Jeg tror jeg har fått til build rules, men får en feil under linkingen. Kan det være fordi den prøver å linke med x86 og ikke x64-versjonen av link.exe? I så fall hvordan kan jeg endre det?


Command Line:
ml64.exe $(InputName).asm /link /subsystem:windows /defaultlib:kernel32.lib /defaultlib:user32.lib /entry:main

Feilen:
LINK : error LNK2001: unresolved external symbol mainCRTStartup

Koden ser slik ut:

Kode

extrn MessageBoxA: PROC
extrn ExitProcess: PROC

.data
mytit db 'The 64-bit world of Windows & assembler...', 0
mymsg db 'Hello World!', 0

.code
main proc
  mov r9d, 0       ; uType = MB_OK
  lea r8,  mytit   ; LPCSTR lpCaption
  lea rdx, mymsg   ; LPCSTR lpText
  mov rcx, 0       ; hWnd = HWND_DESKTOP
  call MessageBoxA
  mov ecx, eax     ; uExitCode = MessageBox(...)
  call ExitProcess
main endp

End
Du kan ikke kompilere M(ASM) i Visual Studio, last ned http://www.masm32.com/masmdl.htm for å kompilere koden din.

Så vidt jeg vet kan man bare bruke inline asm i Visual Studio i C/C++/C# kode. (Og andre språk antar jeg)
Det skal gå å gjøre det i Visual Studio, har brukt ml64.exe og link.exe fra cmd uten problemer. Men er litt grønn når det kommer til instillinger i VS.
/entry:mainCRTStartup
Tror det er et felt under linker konfigurasjonen, "entry-point symbol" eller noe.
Sist endret av dword; 20. oktober 2008 kl. 02:27.
det betyr at han mangler Main() Eller WinMain i tilfellet.

Sikker på at du har valgt console app osv? Er ikke helt sikker på hvordan du skal gjøre det.