namespace в dll

261
27 февраля 2017, 12:36

Пишу dll на C++. Можно ли помещать в ней функцию в namespace? Если да, то какой в этом профит, кроме решения проблемы неуникальности имен и как вызывать такую функцию из exe, если пользоваться GetProcessAddress? Если нет, то почему нельзя namespace-ом отделять такие блоки в dll?

Answer 1

Можно помещать. Да, для решения вопроса с неуникальностью имен. Для того namepace и предназначены, независимо от того, в DLL они использованы или нет.

Если вы хотите пользоваться именно GetProcAddress (а не dllimport), то смотрите глазами после компиляции DLL, под каким именем и индексом экспортировалась функция.

Есть возможность "облагородить" экспортируемые имена через опции линкера, в т.ч. прямо в коде через

#pragma comment(linker, "/EXPORT:MyName=_MangledName@@#123#@@")

но для этого все равно надо знать "зашифрованное" имя. Ну и, понятное дело, в таком случае вопрос уникальности экспортируемых имен снова становится вашей ответственностью.

READ ALSO
Именованный канал по сети без логина и пароля

Именованный канал по сети без логина и пароля

Как создать именованный канал в Windows, чтобы можно было читать из него и записывать данные в него без каких-либо логинов и паролей с компьютеров...

289
Балансировка дерева и приведение его к АВЛ сбалансированному дереву

Балансировка дерева и приведение его к АВЛ сбалансированному дереву

В файле записаны числа, нужно их считать, построить дерево поискаПосле этого сбалансировать дерево, выполнив RR поворот

257
end() vs cend()

end() vs cend()

Всегда ли это предложение возвращает true для стандартных контейнеров?

266
Выборка данных с группировкой по дате

Выборка данных с группировкой по дате

Две таблицы, связь один ко многимКак выбрать присутствующих сотрудников, за день

851