Форум программистов, компьютерный форум CyberForum.ru

Написание и использование DLL - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Повторный вызов конструктора?! http://www.cyberforum.ru/cpp-beginners/thread930032.html
Мой небольшой класс class CString { private: char* str; int len; int real_size; public: CString() : len(0), real_size(10) {
C++ Сортировка чисел Всем добрый вечер! Прошу вашего прощения за тупость,и помощи. Мне было поставлено несложное задание на плюсах, но столкнулся с проблемой В написании одного алгоритма - сказывается нехватка знаний. Мне нужен алгоритм, сортирующий (не подходящее слово, но не могу подобрать лучше) числа. Дан матрица, предположим 5*5. Заполнена полностью нулями. Используется двоичная с/с. Нужно чтоб были... http://www.cyberforum.ru/cpp-beginners/thread930025.html
C++ Крестики-нолики, проверка
Подскажите пожалуйста как тут реализовать проверку по прямой и по диагонали? #include <iostream> #include <cmath> using namespace std; class Board { protected:
C++ функия NtCreateUserProcess
как использоват эту функцию и какие параметры надо передавать заранее спасибо
C++ Искусственный интелект для игры http://www.cyberforum.ru/cpp-beginners/thread929995.html
Подскажите, есть ли современные игры, для которых можно писать интеллект, или игра которая и состоит в том, что бы писать интеллект. Главное не супер качество графики, и еще что либо, а что бы было интересно, и людей было много. Сам искал, но не нашел. Помогите, чем можете.
C++ Объявление переменных в С++ Начал изучение С++ и возник такой вопрос как повторно производить действия с переменными после их объявления? подробнее

Показать сообщение отдельно
h3mbr0
8 / 8 / 0
Регистрация: 12.03.2012
Сообщений: 125
28.07.2013, 23:52  [ТС]     Написание и использование DLL
Спасибо за ответы, вопросы более или менее отпали
Насчет экспорта класса:
Имея следующий код
C++
1
2
3
class  __declspec(dllexport) CFoo
{
};
В таблицу экспорта попадает функция "??4CFoo@@QAEAAV0@ABV0@@Z". За что она отвечает?
А изменить его вот так
C++
1
2
3
4
class  __declspec(dllexport) CFoo
{
    std::string Buf;
};
помимо уже описанной функции, в таблицу попадет еще 3 штуки "??0CFoo@@QAE@ABV0@@Z", "??0CFoo@@QAE@XZ", "??1CFoo@@QAE@XZ"
Логично было бы предположить, что они связаны с классом string, но почему только 3 и что они из себя представляют?

P.S компилятор mvc++ 2012

Добавлено через 10 минут
Есть куча нотаций, С++, Pascal и т.д.
Разве таблица экспортов не устанавливается стандартом PE? мне казалось, что различие только в соглашении вызова

Вы определитесь что вы используете, раннее связывание или позднее. Если говорим о позднем связыванием и использование GetProcAddress/LoadLibrary то только функции.
Насколько можно было понять из моих вопросов - я в этом деле не эксперт(а совсем даже наоборот), и не очень хорошо представляю себе "позднее связывание". Если не трудно, поясните как оно работает, и в чем различие, или хотя бы ссылочку на информацию дайте

COM это отдельная песня, а если хочешь создать систему плагинов, то используй паттерн фабрика и т.п.
Меня интересовал именно сам факт, а не система плагинов

Потому что при экспорте с помощью DEF-файл имя функции попадает в секцию
экспорта без изменений. А при использовании, например, __declspec(dllexport)
имя искажается (декорация имен - name decoration или name mangling).
Смысл искажения имени - поддержка функций с одинаковыми именами, но
разным списком параметров (в С++). Сделать такое через DEF-файл нельзя.
А разве _cdecl не дает такое же неискаженное имя при отсутствии параметров? И, выходит, использовать эту поддержку через GetProcAddress нельзя?

Экспорт в стиле "С". При таком объявлении она экспортируется как C-функция, а
не как функция C++.
Об этом я интуитивно догадался, но интересует меня различие между экспортами С и С++

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

С помощью оператора return.
Передать я передал, а использовать не получается. Весьма вероятно, что это и логично, но почему - не имею понятия

Прошу прощение за такой поток вопросов, но меня очень интересует эта тема, и хотелось бы восполнить в ней все пробелы
 
Текущее время: 21:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru