CL.exe не компилирует C ++ в автономном проекте

Как исправить "CL.exe", не компилирующий C ++ ??

Я создал автономный проект python на своем рабочем столе, имейте в виду, что я не использую Visual Studio, я фактически использую pythontowin. Я хотел бы скомпилировать файл C ++ в DLL для использования в моем проекте python. Но при попытке компиляции с помощью cl.exe я получаю странные необъяснимые ошибки.

Вот мой файл C ++.

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

using namespace std;

void Thread() {
    cout < "Hello World" < endl;
    Sleep(1000);
}

BOOL DllMain(HINSTANCE hDll,DWORD dwReason, LPVOID) {
    if (dwReason == DLL_PROCESS_ATTACH) {
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Thread, 0, 0, 0);
    }
    return TRUE;
}

Команда, используемая для cl.exe: cl.exe /std:c++14 /LD ./../LibraryXdll.cpp

Я получаю вот такую ​​ошибку: fatal error C1034: Windows.h: no include path set

Если бы кто-нибудь мог решить эту ошибку, я был бы очень благодарен, и я могу завершить свой проект, спасибо за помощь. С уважением, RanOutOfQuestions!


person RanOutOfQuestions    schedule 05.06.2018    source источник
comment
Привет, RanOutOfQuestions и добро пожаловать в Stack Overflow! Я не думаю, что материал python имеет какое-либо отношение к вашему вопросу - у вас просто проблемы с компиляцией кода c++. Я прав, или я что-то упускаю?   -  person Max von Hippel    schedule 05.06.2018
comment
Я хорошо разбираюсь в Python и расплывчато в C ++, поэтому я делаю проект Python, используя библиотеки DLL C ++.   -  person RanOutOfQuestions    schedule 05.06.2018
comment
отсутствие установленного пути включения обычно означает, что Windows.h не входит в ваш путь (пути) включения. Вероятно, вам нужно отследить, где находится этот файл, и указать аргумент для поиска по этим включаемым путям. С обычными компиляторами это -I, но cl.exe, вероятно, отличается.   -  person tadman    schedule 05.06.2018
comment
Теперь, когда я пытаюсь: cl.exe / std: c ++ 14 / LD /FI./../Windows.h ./../LibraryXdll.cpp, он дает мне ту же ошибку: фатальная ошибка C1034: ./ .. /Windows.h: не задан путь для включения.   -  person RanOutOfQuestions    schedule 05.06.2018
comment
Возможный дубликат фатальной ошибки C1034: windows.h: no include path установить   -  person Claies    schedule 05.06.2018


Ответы (1)


Обращаясь к комментарию Тадмана:

Похоже, вы не настроили переменные среды для использования cl.exe. Если у вас есть cl.exe, у вас также должен быть Bat-файл с именем vcvarsall.bat или vcvars32.bat / vcvars64.bat. В случае установки Visual Studio по умолчанию их можно найти в папке «Program Files (x86) \ Microsoft Visual Studio \ номер версии \ тип продукта, например, community \ VC \ A вспомогательный \ Build».

Запустите соответствующую версию vcvars ... (32- или 64-разрядную, или укажите флаг для vcvarsall, см. Документацию), и ваши пути включения для ЭТОЙ СЕССИИ будут установлены (внутри этого терминала, если вы закроете его, изменения снова будут потеряны и в следующий раз вам придется снова вызвать vcvars).

РЕДАКТИРОВАТЬ: документация Microsoft по vcvars

Вы можете обойти этот сброс, вызывая vcvars каждый раз перед запуском компилятора, хотя это не очень красивое решение.

person Community    schedule 05.06.2018
comment
Спасибо, я попробую это сделать. У вас есть синтаксис или ссылка на docx? - person RanOutOfQuestions; 05.06.2018
comment
Я понятия не имею, что я предлагаю использовать vcvars.bat, потому что единственная информация, которую я получил, это то, что мне нужно использовать его перед компиляцией? - person RanOutOfQuestions; 05.06.2018
comment
Я просто предполагаю, что вы используете окна, поскольку вы используете cl.exe. Я добавил ссылку на официальный документ в исходный ответ. Vcvars устанавливает для вас переменные среды, такие как Include-paths, lib-paths, ... В противном случае ваш компилятор просто не знает, где должен быть windows.h, и не может его найти. - person ; 05.06.2018