Я использую следующий код для доступа к методу в DLL-файле, и я получаю Access violation reading location 0x41100000
при вызове метода из метода dll.Доступ к точке доступа при доступе к методу dll
Метод, который я пытаюсь получить доступ имеет следующий прототип
int dstoch(float,float,float,float,float,float,float,float,float);
Это мой код
typedef int (*LPMyfunct)(float,float,float,float,float,float,float,float,float);
HINSTANCE hDLL = NULL;
LPMyfunct lpdstoch = NULL;
hDLL = LoadLibrary("c:\\myfile.dll");
if(hDLL!=NULL)
{
std::cout << "Library loaded \n";
lpdstoch = (LPMyfunct)GetProcAddress((HMODULE)hDLL, "dstoch");
int res = 0;
if(lpdstoch != NULL)
{
try
{
res = lpdstoch(1.1,2.2,3.3,4.4,5.4,6.4,7.4,8.8,9.9); //Gives the error
}
catch (std::exception &e)
{
std::cout << e.what();
}
}
}
Любые предложения, какие могут быть причины? Есть ли вероятность, что в файле dll есть ошибка? Есть ли способ читать параметры DLL-файла? Отнесите его, чтобы проверить, правильно ли я получаю параметры параметров? Средство проверки отсрочки показывает, что метод существует, но я не могу определить типы аргументов?
Update:
Я все еще получаю ошибку
первого шанса исключение в 0x0040356c в TEST.EXE: 0xC0000005: Нарушение прав доступа месте для записи 0x42080000. Необработанное исключение в 0x0040356c в Cexperiment.exe: 0xC0000005: Запись о нарушении доступа местоположение 0x42080000.
Я также считаю, что этот вопрос не может быть связано с призванием конвенции .The Поэтому я считаю, потому что я не получаю сообщение об ошибке от VS2010 о том, что соглашение о вызовах может быть cause.I получил это сообщение когда я попытался использовать другую DLL. Поэтому, если вызов конвенции или параметров не является проблемой (вы получаете одно и то же сообщение о вызове вызова, если параметры разные), то это может быть что-то другое. Какие-нибудь предложения по тому, что я мог попробовать?
В вашем другом вопросе вы сказали, что требуется 9 поплавков. Здесь вы проезжаете 9 неплавающих. – huskerchad
Да. Я думал, что это будет неявным. Я пробовал прохождение поплавков, и я получаю тот же ответ. – MistyD
Не волнуйтесь, ints вместо поплавок в порядке. – chris