Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
-17 / 1 / 0
Регистрация: 26.01.2021
Сообщений: 44

Вызывается одноименный метод из другого проекта

07.02.2024, 17:54. Показов 1977. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть решение, в нём несколько проектов.
Проект MainInterface и несколько плаг-инов ProjectOne, ProjectTwo и т.д.
В (почти) каждом проекте есть статический класс CWorker имеющий статической метод DoWork, который вызывает ещё один метод класса из одного из проектов с разными, для каждого проекта, аргументами.
Например в проекте ProjectOne это выглядит как CMainWorker::instance->Work("ProjectOne", другие параметры)
В винде всё работает так как нужно, в каждом проекте вызываются методы класса из того же проекта.
А в linux почему-то вызывается метод DoWork из другого проекта (а точнее MainInterface).

Почему так происходит и как это решить? Именно в linux (конкретно Debian 11).
Завернуть в namespace? Обозвать по разному (это худший вариант)?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2024, 17:54
Ответы с готовыми решениями:

Одноименный метод из одного класса меняет объект другого класса
Здравствуйте! Задача была написать два класса отражающие данные в двумерном списке вертикально и горизонтально. class RightMirror(): ...

Одноименный метод + перегрузка?
День добрый! Такой вопрос, наткнулся на такой кусок кода: public class Lala { public int id; public String name; ...

Интерфейсное наследование: Что, если в цепочке иерархии интерфейсов в каждом из них есть одноименный метод
У меня вопрос, что если в цепочке иерархии интерфейсов в каждом из них есть одноименный метод. Как разрешить данную проблему и вообще такое...

6
фрилансер
 Аватар для Алексей1153
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
07.02.2024, 19:44
Цитата Сообщение от slavatrifonov Посмотреть сообщение
статический класс
- про какой язык речь ?

Добавлено через 16 секунд
и как это - вызвать функцию из другого проекта ?
0
-17 / 1 / 0
Регистрация: 26.01.2021
Сообщений: 44
07.02.2024, 20:07  [ТС]
не стоит придираться к словам. ну написал два раза статический. пальцы быстрее мыслей.

а как вызывают функции из других проектов? легко. другой проект собирается как длл. макрос экспорта. и синглтон.
0
фрилансер
 Аватар для Алексей1153
6465 / 5679 / 1131
Регистрация: 11.10.2019
Сообщений: 15,122
07.02.2024, 21:21
slavatrifonov, я не придираюсь, тут всякое встречается

Цитата Сообщение от slavatrifonov Посмотреть сообщение
а как вызывают функции из других проектов?
заголовок+cpp
статическая библиотека
динамическая библиотека
через энергию Космоса
-мало ли как ещё их вызывают?

Цитата Сообщение от slavatrifonov Посмотреть сообщение
А в linux почему-то вызывается метод DoWork из другого проекта (а точнее MainInterface).
видимо, нужно приложить минимальный работающий пример, а затем подождать тех, кто работает с линуксом (я не работаю)

Добавлено через 1 минуту
чисто логически - не та библиотека линкуется, видимо. Имена библиотек, либо их расположение нужно смотреть
0
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,818
07.02.2024, 22:40
Цитата Сообщение от slavatrifonov Посмотреть сообщение
Почему так происходит и как это решить? Именно в linux (конкретно Debian 11).
Все символы смотрят наружу, а у вас одноименные функции. ODR нарушаем, диагностика по стандарту не требуется, получаем UB.

Если плагинная система, то как вариант, можно грузить so-шки через dlopen c флагом RTLD_LOCAL.

А вообще я согласен. Нужен законченный компилируемый, минимальный пример, воспроизводящий проблему, иначе 98%, что будет потеря времени и с вашей и с нашей стороны.
0
-17 / 1 / 0
Регистрация: 26.01.2021
Сообщений: 44
08.02.2024, 17:44  [ТС]
Пока изучаю __attribute__((visibility(....)))
Возможно поможет.

Добавлено через 4 часа 59 минут
в линуксе, в отличие от винды, все символы, как было сказано раньше, смотрят наружу по умолчанию.
для решения этой проблемы в нужных местах определяем
#define EXPORT_HIDE __attribute__((visibility("hidden")))
естественно в зависимости от платформы сборки

Либо ключом компилятора сделать все символы скрытыми (-fvisibility=hidden), а тем что нужно сделать видимыми дать аттрибут default
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13179 / 6815 / 1821
Регистрация: 18.10.2014
Сообщений: 17,243
09.02.2024, 00:45
Цитата Сообщение от slavatrifonov Посмотреть сообщение
в линуксе, в отличие от винды, все символы, как было сказано раньше, смотрят наружу по умолчанию.
Это относится исключительно к символам в shared libraries/DLL. Но в исходном вопросе не видно ни слова про shared libraries/DLL.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.02.2024, 00:45
Помогаю со студенческими работами здесь

Не могу понять почему не вызывается метод? Как вывести метод Plus?
namespace lesson3 { class Program { struct Complex { public double im; public double re;

как сделать ссылку из страницы одного проекта на страницу другого проекта?
Добрый день! Подскажите пожалуйста, у меня есть Solution, в нем проект на WebForms и проект Dinamic Data. Ссылки на проект есть у WebForms...

Как импортировать пакет одного проекта в классах другого проекта
Здравствуйте, совсем недавно начал изучать Java, такой вопрос: работаю в иде Eclipse, как мне импортировать пакет, созданный в одной...

Создать доступ нового проекта к аккаунту скриптом другого проекта
Подскажите: что нужно для решения описанной ниже задачи? Все происходит на моем Google -диске. Обратите внимание – мне ни от кого...

Запуск проекта из консоли с зависимостями от другого проекта
Указал PATH как нужно, запускаю командой java -cp . Main (т.е. из текущего каталога и CLASSPATH указывать не надо), выскакивает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru