У меня есть функция, определенная в main.cpp . Я хочу вызвать его внутри модуля Hello. Файл hello.cppm Экспортный модуль hello с реализацией в hello.cpp . Файлы вырезаны и вставлены из более крупных файлов, поэтому могут возникнуть ошибки компиляции. Они должны быть близки. (Компилятор Explorer IDE не будет делать для меня модули.)
Вопрос в том, где я могу поместить объявление об внешнем кажется вероятным) hello.cppm ? Я пробовал позиции до и после различных операторов . Большинство генерируют ошибки компилятора. Где это сейчас, он собирает, но не будет связывать. Я подозреваю, что это считается неэкспортируемым модулем hello функция. >? Это учебный эксперимент. В заголовке все работает, но это не нужно для одной функции. p> ошибка линкера. < /p>
function `main':
main.cpp:(.text.startup+0x1c): undefined reference to `mod::HelloAgain@Hello::operator()() const'
/usr/bin/ld: libHello.a(hello.cpp.o): in function `mod::Hello@Hello::operator()() const':
hello.cpp:(.text+0x1d): undefined reference to `hello_func_global@Hello[abi:cxx11]()'
< /code>
main.cpp
#include
#include
using namespace std::literals;
auto hello_func_global() -> std::string {
return "Hello from a global function."s;
}
import Hello;
auto main() -> int {
mod::Hello();
constexpr mod::Hello hello;
constexpr mod::HelloAgain hello_again;
hello_again();
std::cout void;
};
}
< /code>
hell0.cpp
module Hello;
extern auto hello_func_global() -> std::string;
using namespace std::literals;
namespace mod {
auto Hello::operator()() const -> void {
hello_func_global();
std::cout
cmake_minimum_required(VERSION 3.28.3)
project(Hello)
add_library(Hello)
target_sources(Hello
PUBLIC
FILE_SET CXX_MODULES
FILES Hello.cppm
PRIVATE
hello.cpp
hello_again.cpp
)
set_target_properties(Hello PROPERTIES CXX_MODULE_TYPE GLOBAL)
Подробнее здесь: https://stackoverflow.com/questions/794 ... eader-file
Как использовать глобальные функции внутри модуля без использования файла заголовка ⇐ C++
Программы на C++. Форум разработчиков
1738895663
Anonymous
У меня есть функция, определенная в main.cpp . Я хочу вызвать его внутри модуля Hello. Файл hello.cppm Экспортный модуль hello с реализацией в hello.cpp . Файлы вырезаны и вставлены из более крупных файлов, поэтому могут возникнуть ошибки компиляции. Они должны быть близки. (Компилятор Explorer IDE не будет делать для меня модули.)
Вопрос в том, где я могу поместить объявление об внешнем кажется вероятным) hello.cppm ? Я пробовал позиции до и после различных операторов . Большинство генерируют ошибки компилятора. Где это сейчас, он собирает, но не будет связывать. Я подозреваю, что это считается неэкспортируемым модулем hello функция. >? Это учебный эксперимент. В заголовке все работает, но это не нужно для одной функции. p> ошибка линкера. < /p>
function `main':
main.cpp:(.text.startup+0x1c): undefined reference to `mod::HelloAgain@Hello::operator()() const'
/usr/bin/ld: libHello.a(hello.cpp.o): in function `mod::Hello@Hello::operator()() const':
hello.cpp:(.text+0x1d): undefined reference to `hello_func_global@Hello[abi:cxx11]()'
< /code>
main.cpp
#include
#include
using namespace std::literals;
auto hello_func_global() -> std::string {
return "Hello from a global function."s;
}
import Hello;
auto main() -> int {
mod::Hello();
constexpr mod::Hello hello;
constexpr mod::HelloAgain hello_again;
hello_again();
std::cout void;
};
}
< /code>
hell0.cpp
module Hello;
extern auto hello_func_global() -> std::string;
using namespace std::literals;
namespace mod {
auto Hello::operator()() const -> void {
hello_func_global();
std::cout
cmake_minimum_required(VERSION 3.28.3)
project(Hello)
add_library(Hello)
target_sources(Hello
PUBLIC
FILE_SET CXX_MODULES
FILES Hello.cppm
PRIVATE
hello.cpp
hello_again.cpp
)
set_target_properties(Hello PROPERTIES CXX_MODULE_TYPE GLOBAL)
Подробнее здесь: [url]https://stackoverflow.com/questions/79419520/how-to-use-global-functions-inside-a-module-without-using-a-header-file[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия