Как вызывать функции C ++ из сборки x86 MASM - PullRequest
0 голосов
/ 01 декабря 2018

Я пытаюсь создать barebones-клиент и сервер в сборке x86 (финальный проект).Я написал работающий сервер / клиент на c ++ и теперь хочу перенести его.Однако, я в растерянности относительно того, как вызывать функции c ++ (т.е. стандартные функции SOCKET из WinSock2.h или любые другие функции c ++ в этом отношении) внутри сборки.

Вот простая asm-программа, которая пытается вызвать printf:

TITLE asmMain.asm
.386
.model flat,C

printf PROTO C, format:PTR BYTE, args:VARARG
scanf PROTO C, format:PTR BYTE, args:VARARG

.data
value1 DWORD 1234567
formatStr BYTE "%d",0dh,0ah,0
scanStr2 BYTE "%d", 0

.code
printInt PROC
    INVOKE printf, ADDR formatStr, value1
    ret
printInt ENDP
END

Однако при сборке я получаю ошибку компоновщика:

LNK2019 unresolved external symbol _printf referenced in function printInt

Как мнеидти об этой задаче?И является ли процесс для вызова c ++ таким же, как c?Как мне сказать компилятору использовать функции из WinSock2.h (Ws2_32.lib)?Я делаю этот проект в Visual Studio 2017.

...