Имеется исходник консольной программы для проведения вычислений. Программа написана на Си и компилируется mingw. После компиляции я получаю рабочий экзешник. Мне эту программу нужно переделать в dll, так, чтобы в дальнейшем я мог подключать эту dll к программе-графическому интерфейсу.
Для начала я добавил под функцию мэйн в программе (будующий dll) такой код:
"Библиотека" загружается и функция Message тоже. Но при попытке вызвать функцию я получаю ошибку:
0xC0000005: Нарушение прав доступа при чтении "0x0045a780"
0xC0000005: Access violation reading location "0x0045a780
Собственно я почти уверен что мало просто добавить __declspec(dllexport) в исходник чтоб получить рабочую dll. Я пробовал искать мануалы и доки, но всё что находилось — было под С++. Я зашел в тупик и решил поднять тему тут, буду благодарен за любую помощь.
Здравствуйте, Kadet89, Вы писали:
K>Собрав программу я получил экзешник (не dll) и проверив его в dumpbin я получил такой результат:
так вам надо сделать длл, а не exe, работайте в этом направлении
вы что же потом переименовали полученный exe в dll? плохая затея
Здравствуйте, Kadet89, Вы писали:
K>Собственно я почти уверен что мало просто добавить __declspec(dllexport) в исходник чтоб получить рабочую dll. Я пробовал искать мануалы и доки, но всё что находилось — было под С++. Я зашел в тупик и решил поднять тему тут, буду благодарен за любую помощь.
1) у тебя неправильно инициализируется рантайм, скажи ЛИНКЕРУ, что ты собираешь DLL, а не EXE. С или С++ в данном случае не так важно.
2) Если ты укажешь чем конкретно ты планируешь собирать свою dll и exe, которая ту dll будет линковать -- будет проще дать тебе конкретные рекоммендации.
3) Зачем тебе вообще dll? Обычно C довольно таки переносим. Почему бы просто не вытащить весь код в основную программу и всё?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>3) Зачем тебе вообще dll? Обычно C довольно таки переносим. Почему бы просто не вытащить весь код в основную программу и всё?
А зачем вообще декомпозиция?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, Ops, Вы писали:
Ops>А зачем вообще декомпозиция?
Кому зачем. Тебе надо dll, что бы был плагин? Или для чего?
Для чего ей быть чисто с-шной?
На чём остальная программа?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском