Использование 64-битного clang-cl в Windows 8.1

Я только начал использовать clang-cl в Windows, потому что мне нужно использовать встроенную сборку в 64-битном приложении, а Visual Studio 2015 не поддерживает это, поэтому мне сказали, что нужно выбрать clang-cl.

Я скачал предварительно собранный бинарный файл (clang 3.7.0) из Вот, 64-битная версия Windows.

Поэтому я попытался сделать свою первую программу, но, к сожалению, она не компилируется. Тот же код компилируется в Visual Studio 2015 (кроме оператора сборки).

Пожалуйста помоги

Это команда, которую я использовал от администратора cmd (я бежал на нем vsvart32 как раз перед этим)
clang-cl.exe -m64 C:\test\Source.cpp

Вот мой код:

#include <Windows.h>
#include <iostream>

int main() {

int a = 0;
if(0)//this if-else is to mess up disassmblers
__asm __emit 0xE8 //only this line doesn't go on VS2015
else
a=3;

if (IsDebuggerPresent())
MessageBox(
NULL,
(LPCWSTR)L"Debugger detected!!",
(LPCWSTR)L"!!!!!",
MB_ICONWARNING | MB_CANCELTRYCONTINUE | MB_DEFBUTTON2
);
return 0;
}

И это clang-cl.exe выход:

C:\Program Files\LLVM\bin>clang-cl.exe -m64 C:\test\Source.cpp
C:\test\Source.cpp(13,2) :  error: no matching function for call to
'MessageBoxA'
MessageBox(
^~~~~~~~~~
C:\Program Files (x86)\Windows Kits\8.1\include\um\winuser.h(8705,21) :       note:
expanded from macro 'MessageBox'
#define MessageBox  MessageBoxA
^~~~~~~~~~~
C:\Program Files (x86)\Windows Kits\8.1\include\um\winuser.h(8689,1) :  note:
candidate function not viable: no known conversion from 'LPCWSTR'
(aka 'const wchar_t *') to 'LPCSTR' (aka 'const char *') for 2nd argument
MessageBoxA(
^
1 error generated.

РЕДАКТИРОВАТЬ спасибо @Martin Bonner, проблема была в том, что мне нужно было использовать #define UNICODE, Но теперь мне также нужно скомпилировать на 64-битной. Как я могу это сделать?

1

Решение

Тебе нужно #define UNICODE до #include <windows.h> если вы собираетесь передавать широкие строки в функции, такие как MessageBox

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]