Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2011, 23:42   #1
12sd
Новичок
Джуниор
 
Регистрация: 30.11.2011
Сообщений: 1
По умолчанию Динамическое подключение DLL [VS2010]

Доброго времени суток. Курил статью.
Есть своя dll со следующим кодом:
Код:
#include <windows.h>
extern "C" _declspec(dllexport) int hello () {
{
	return 5;
}
Есть другая программа, которой нужно эту dll динамически подключить:
Код:
#include <iostream>
#include <Windows.h>
using namespace std;
void main () {
	const char string [] = "right_dll.dll";
	LPCWSTR put = (LPCWSTR) string;
	HINSTANCE my_dll = LoadLibraryEx (put, 0, DONT_RESOLVE_DLL_REFERENCES);
	typedef int(*functionDll)();
	functionDll func = (functionDll)GetProcAddress(my_dll,"hello");
	cout << func ();
	FreeLibrary(my_dll);
}
Компилируется без ошибок, все ОК. На этапе исполнения при LoadLibraryEx ошибка.
"Программа завершила работу"
Подробнее - "необработанное исключение [4360]".
Что я делаю не так и где вообще можно смотреть номера и описание этих исключений?
12sd вне форума Ответить с цитированием
Старый 01.12.2011, 12:19   #2
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

Код:
	const char string [] = "right_dll.dll";
	LPCWSTR put = (LPCWSTR) string;
о боже...

попробуй строчку
Код:
HINSTANCE my_dll = LoadLibraryEx (put, 0, DONT_RESOLVE_DLL_REFERENCES
замени на:
Код:
	HMODULE my_dll;
	my_dll = LoadLibraryA("right_dll.dll");
И вообще для таких ситуаций надо всегда выполнять проверку Хендлов, и не только.
Вызвал LoadLibrary - проверь, что вернулось. и тд.
onewho вне форума Ответить с цитированием
Старый 02.12.2011, 13:32   #3
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

Тащем LPCWSTR - это указатель на юникодную строчку (буква W какбы говорит нам об этом).
Ты же присваиваешь переменной указатель на неюникодный массив.
Son Of Pain вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
динамическое подключение формы Wi1D Компоненты Delphi 7 24.01.2011 10:36
Динамическое подключение Dll С++ дашка-милашка Помощь студентам 0 14.06.2010 15:50
Подключение DLL __Demon__ C++ Builder 2 09.12.2009 00:29
Dll динамическое подключение MAcK Общие вопросы Delphi 1 11.08.2008 16:45
Подключение DLL 5naip Помощь студентам 9 27.10.2007 20:55