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

Ошибка при работе с dll - невозможно преобразовать параметр - C++

Восстановить пароль Регистрация
 
andyoO
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 68
02.06.2013, 20:45     Ошибка при работе с dll - невозможно преобразовать параметр #1
пишу прогу, функции передаются с dll, выдает ошибку в строке
C++
1
HINSTANCE mydll = LoadLibrary ("my_dll.dll");
error C2664: LoadLibraryW: невозможно преобразовать параметр 1 из "const char [11]" в "LPCWSTR"
почему ругается?( в 1 раз с dll работаю(
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.06.2013, 21:43     Ошибка при работе с dll - невозможно преобразовать параметр #2
Попробуйте так:
C++
1
HINSTANCE mydll = LoadLibrary (L"my_dll.dll");
andyoO
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 68
02.06.2013, 21:52  [ТС]     Ошибка при работе с dll - невозможно преобразовать параметр #3
alsav22, если нетрудно, поясните пожалуйста что значит L?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
02.06.2013, 22:14     Ошибка при работе с dll - невозможно преобразовать параметр #4
Цитата Сообщение от andyoO Посмотреть сообщение
alsav22, если нетрудно, поясните пожалуйста что значит L?
Что дальше текст из расширенных символов (wchar_t)
andyoO
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 68
03.06.2013, 09:34  [ТС]     Ошибка при работе с dll - невозможно преобразовать параметр #5
alsav22, но мне нужно передать с dll значения функции double(
Игорь с++
 Аватар для Игорь с++
429 / 452 / 15
Регистрация: 26.01.2011
Сообщений: 2,029
03.06.2013, 10:21     Ошибка при работе с dll - невозможно преобразовать параметр #6
Цитата Сообщение от andyoO Посмотреть сообщение
но мне нужно передать с dll значения функции double(
и что ? чем вам помешает вот это -
Цитата Сообщение от alsav22 Посмотреть сообщение
Что дальше текст из расширенных символов (wchar_t)
andyoO
1 / 1 / 0
Регистрация: 19.12.2012
Сообщений: 68
03.06.2013, 10:33  [ТС]     Ошибка при работе с dll - невозможно преобразовать параметр #7
вот полный код проги, дело в том, что вообще не передаются данные(
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
#include "StdAfx.h"
#include <math.h> 
#include <string.h>
#include <conio.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <time.h>
#include <windows.h> 
using namespace std;
long double factorial(double k=0)
{
    if (k == 0) 
        return 1; 
    else
        return k * factorial(k - 1); // делаем рекурсию.
 
}
double function(double x, double eps)
{
double func=1,funct=1,k=0; 
do
{
func=funct;
k++;
funct=func+pow(x,k)/factorial(k); 
} while(abs(funct-func)>=eps); 
return func;
};
 
double epsil (double x,double fun)
{
return (sqrt(abs(exp(x)*exp(x) - fun*fun)));
};
 
 
int main(int argc, _TCHAR* argv[])
{ setlocale(LC_ALL,"Russian");
    HINSTANCE mydll = LoadLibrary (L"my_dll.dll");
    if (mydll==NULL)
    {
        cout<<"error!!!";
        return 0;
    }
    typedef double (*Func_epsil)(double, double, double);
    Func_epsil epsil_dll = (Func_epsil)GetProcAddress( mydll, "epsil" );
 
    typedef double (*Func_function_dll)(double, double);
    Func_function_dll function_dll = (Func_function_dll)GetProcAddress( mydll, "function" );
 
    typedef double (*Func_eksponent)(double);
    Func_eksponent eksponent_dll = (Func_eksponent)GetProcAddress( mydll, "eksponent" );
double eps ,fun=0, xna4, xkon, delta,x,xideal,m;
cout<<("Введите начальное Х\n");
cin>>xna4;
cout<<("Введите конечное X\n");
cin>>xkon;
cout<<("Введите шаг\n");
cin>>delta;
if (delta == 0)
{ cout<<("Неверно, введите новое значение\n");
cout<<("шаг"); 
cin>>delta;}
while (xna4>xkon && delta>0)
{ cout<<("Неверно, введите новое значение\n");
cout<<("шаг\n"); 
cin>>delta;
cout<<("x начальное\n"); 
cin>>xna4;
cout<<("x конечное\n"); 
cin>>xkon;}
while (xna4<xkon && delta<0)
{ cout<<("Неверно, введите новое значение\n");
cout<<("Введите корректное значение x начальное\n"); 
cin>>xna4;
cout<<("Введите корректное значение x конечное\n"); 
cin>>xkon;
cout<<("Введите корректное значение шага\n"); 
cin>>delta;
}
 
while(abs(xna4-xkon)<delta) {
cout<<("Введите корректное значение x начальное\n");
cin>>xna4;
cout<<("Введите корректное значение x конечное\n");
cin>>xkon;
cout<<("Введите корректное значение шаг\n");
cin>>delta; }
if (xna4==xkon) {printf ("Неверно, введите новое значение\n"); 
cout<<("Введите корректное значение x начальное\n");
cin>>xna4;
cout<<("Введите корректное значение x конечное\n");
cin>>xkon;
cout<<("Введите корректное значение шаг\n");
cin>>delta;
}
 
cout<<"Введите точность\n";
cin>>eps;
//if ((eps>0.1) (eps<0.0000001) || eps<0 || eps!=0) //1
while ((eps>1) || (eps<=0)) 
{
cout<<("Введите корректное значение точности\n");
cin>>eps;
}
cout<<"Введите Х идеальное\n ";
cin >> xideal;
printf ("----------------------------------------------------------------\n");
printf ("|     x      |  MyFunction(x) |      pi/4      |      delta     |\n");
printf ("----------------------------------------------------------------\n");
for (x=xna4; x<=xkon; x=x+delta)
{
printf("|%12.4f| %14.7f | %14.7f | %14.7f |\n",x,function_dll(x,eps),eksponent_dll,epsil(x,function(x,eps)));
printf ("----------------------------------------------------------------\n");
}
 
for (x=xna4; x>=xkon; x=x+delta)
{
printf("|%12.4f| %14.7f | %14.7f | %14.7f |\n",x,function_dll(x,eps),eksponent_dll,epsil(x,function(x,eps)));
printf ("----------------------------------------------------------------\n");
}
 
printf ("----------------------------------------------------------------\n");
printf ("|     eps    |  MyFunction(x) |      pi/4      |     delta      |\n");
printf ("----------------------------------------------------------------\n");
for (eps=0.1;eps>0.0000001;eps=eps*0.1) // 1
{
printf("|%12.7f| %14.7f | %14.7f | %14.7f |\n",eps,function_dll(xideal,eps),exp(xideal),epsil(x,function(x,eps)));
printf ("----------------------------------------------------------------\n");
}
getch();
}
my_dll
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "stdafx.h"
#include <math.h>
 
extern "C" __declspec(dllexport) double epsil (double x,double fun);
extern "C" __declspec(dllexport) double function(double x, double eps)
 
double epsil (double x,double fun);
long double factorial(double k=0);
double function(double x, double eps)
 
extern "C" __declspec(dllexport) double function(double x, double eps)
{
    return function(double (x), double (eps));
}
 
extern "C" __declspec(dllexport) double epsil (double x,double fun)
{
    return epsil (double (x),double (fun));
}
extern "C" __declspec(dllexport) double eksponent (double x)
{
    return exp(x);
}
 
long double factorial(double k=0)
{
    if (k == 0) 
        return 1; 
    else
        return k * factorial(k - 1); // делаем рекурсию.
 
}
 
double function(double x, double eps)
{
double func=1,funct=1,k=0; 
do
{
func=funct;
k++;
funct=func+pow(x,k)/factorial(k); 
} while(abs(funct-func)>=eps); 
return func;
};
 
double epsil (double x,double fun)
{
return (sqrt(abs(exp(x)*exp(x) - fun*fun)));
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2013, 13:36     Ошибка при работе с dll - невозможно преобразовать параметр
Еще ссылки по теме:

C++ невозможно преобразовать параметр
C++ fscanf: невозможно преобразовать параметр 1 из 'char [40]' в 'FILE *'
C++ Невозможно преобразовать параметр из int в const char

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
03.06.2013, 13:36     Ошибка при работе с dll - невозможно преобразовать параметр #8
Ответ был на этот вопрос:
Цитата Сообщение от andyoO Посмотреть сообщение
пишу прогу, функции передаются с dll, выдает ошибку в строке
C++
1
HINSTANCE mydll = LoadLibrary ("my_dll.dll");
error C2664: LoadLibraryW: невозможно преобразовать параметр 1 из "const char [11]" в "LPCWSTR"
почему ругается?( в 1 раз с dll работаю(
вот полный код проги, дело в том, что вообще не передаются данные(
Это уже другая тема.
Yandex
Объявления
03.06.2013, 13:36     Ошибка при работе с dll - невозможно преобразовать параметр
Ответ Создать тему
Опции темы

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