Компиляция модулей C ++ 20 с помощью Visual Studio: не компилирует и не импортирует файлы ixx - PullRequest
0 голосов
/ 17 июня 2020

Visual Studio 2019 не пытается скомпилировать мои файлы .cxx или .ixx. Вот мой файл .cxx:

export module greetings;

import std.core;

export std::string get_greeting_text()
{
    return "Hello, World!";
}

, а вот главный:

import std.core;
import greetings;

int main()
{
    std::cout << get_greeting_text() << '\n';
}

У меня есть эти флаги: /std:c++latest, /experimental:module. Сообщения об ошибках:

C:\...\main.cpp(2,17):error C2230: could not find module 'greetings'
C:\...\main.cpp(6,2): error C3861: 'get_greeting_text': identifier not found

... но я не вижу ни одной строки о попытке скомпилировать greetings.cxx, так что это должно быть проблемой. Изменение его на .ixx не имеет никакого эффекта. Что делать?

Ответы [ 2 ]

7 голосов
/ 21 июня 2020

Решение:

  • Добавьте welcome.ixx в файлы заголовков. (Добавить его в исходные файлы не получится.)
  • Щелкните правой кнопкой мыши свойства в Hello.ixx и
    • Установите для типа элемента значение C / C ++ Compiler
    • Установите Excluded from Build на No.
    • Save
  • Build

Это кажется немного нестабильным. Восстановление не удалось, если я сначала не выполнил чистку.

0 голосов
/ 18 июня 2020

Объявление модуля export module greetings; еще не работает в Visual Studio 2019.

Вы можете попробовать добавить следующие мнения компилятора для вашего файла greetings.cxx:

/module:export /module:name greetings /module:wrapper greetings.h /module:output greetings.ifc -c greetings.cxx

Другое решение переименуйте greetings.cxx в greetings.ixx. Расширение .ixx требуется для файлов интерфейса модуля в Visual Studio.

...