|
Вспомним синтаксис C++ или помогите с присвоением значения переменной | ☑ | ||
---|---|---|---|---|
0
Midaw
12.11.13
✎
14:21
|
Есть такой код:
typedef BOOL(FAR *GetDeviceListFuncType) (LPVOID*, int*, LPVOID*, int); BOOL(FAR* Proba); LPVOID* aaa1, aaa2; int* bbb1; int bbb2; Proba = GetDeviceListFuncType(aaa1, bbb1, aaa2, bbb2); Получаю ошибку: IntelliSense: значение типа "GetDeviceListFuncType" нельзя присвоить сущности типа "BOOL *" Что сделано неправильно? |
|||
1
H A D G E H O G s
12.11.13
✎
14:23
|
(0) Выбран неправильный ЯП.
|
|||
2
Господин ПЖ
12.11.13
✎
14:25
|
создал новый тип... ну и накуа?
|
|||
3
Midaw
12.11.13
✎
14:27
|
(2) по идеи это функция из DLL, которую я не знаю как использовать в C++.
|
|||
4
H A D G E H O G s
12.11.13
✎
14:29
|
(2) Процедурный тип. Он хочет испортировать функцию из dll красивою
|
|||
5
Кирпич
12.11.13
✎
14:31
|
||||
6
zak555
12.11.13
✎
14:33
|
(1) самый правильный
|
|||
7
Кирпич
12.11.13
✎
14:34
|
непонимаю, как сюда попадают люди, которые не могут пользоваться интернетом. через голосового оператора какого то чтоли.
|
|||
8
Кирпич
12.11.13
✎
14:45
|
примерно так
typedef BOOL (FAR *GetDeviceListFuncType) (LPVOID*, int*, LPVOID*, int); HMODULE hLib = GetModuleHandle("MyDll.dll"); GetDeviceListFuncType GetDeviceList = GetProcAddress(hLib, "GetDeviceListFunc"); GetDeviceList(a,b,c,d); |
|||
9
Кирпич
12.11.13
✎
14:46
|
BOOL x = GetDeviceList(a,b,c,d);
|
|||
10
Midaw
12.11.13
✎
14:50
|
нуну, раскудахтались.
(5) этот путь то самый верный, но он не взлетел в C#. сейчас взлетел. но есть другие проблемы. продолжу потом. (8) спс. |
|||
11
Кирпич
12.11.13
✎
14:50
|
но если горит, то к программисту с букетом и бутылкой пива.
|
|||
12
Midaw
12.11.13
✎
15:04
|
IntelliSense: значение типа "FARPROC" нельзя использовать для инициализации сущности типа "GetDeviceListFuncType"
(11) не горит. для себя родного всё. |
|||
13
Кирпич
12.11.13
✎
15:10
|
(12) ну ты хоть выложил свою писанину. или надо ещё угадать чего ты там понаписал?
|
|||
14
Midaw
12.11.13
✎
15:15
|
(13)
HMODULE hLib = GetModuleHandle("PMDll.dll"); typedef BOOL (FAR *GetDeviceListFuncType) (LPVOID*, int*, LPVOID*, int); GetDeviceListFuncType pVar = GetProcAddress(hLib, "GetDeviceListFuncType"); ошибка в (12) |
|||
15
Кирпич
12.11.13
✎
15:30
|
GetDeviceListFuncType( GetProcAddress(hLib, "GetDeviceListFuncType"));
|
|||
16
Midaw
12.11.13
✎
15:30
|
Получилось вот так
BOOL (FAR *GetDeviceListFuncType) (LPVOID*, int*, LPVOID*, int); (FARPROC &)GetDeviceListFuncType = GetProcAddress(hLib, "GetDeviceListFuncType"); BOOL pVar = GetDeviceListFuncType(aaa1, bbb1, aaa2, bbb2); по примеру из ссылки выше. теперь осталось добить переменные для функции... |
|||
17
Кирпич
12.11.13
✎
15:31
|
ага. так тож можно
|
|||
18
Кирпич
12.11.13
✎
15:32
|
ну судя по
LPVOID* aaa1, aaa2; int* bbb1; int bbb2; тебе еще долго ковыряться :) |
|||
19
Кирпич
12.11.13
✎
15:34
|
(FARPROC &)GetDeviceListFuncType = GetProcAddress(hLib, "GetDeviceListFuncType");
НЕПРАВИЛЬНО |
|||
20
Midaw
12.11.13
✎
15:43
|
(19) почему и как правильно?
(18) да вот этого мало. пишет использована неинициализированная локальная переменная "aaa2" кроме того надо как привести к public struct LAN_DEVICE { [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 21)] public String strHostname;//host name or ip address, max 21 chars [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 21)] public String strPort;//port number, max 21 chars [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 21)] public String strPassword;//password, max 21 chars public bool bEnabled;//flag, if device is enabled } |
|||
21
Кирпич
12.11.13
✎
15:48
|
так правильно
GetDeviceListFuncType GetDeviceList = GetDeviceListFuncType(GetProcAddress(hLib, "GetDeviceListFunc")); GetDeviceList(a,b,c,d); |
|||
22
Кирпич
12.11.13
✎
15:49
|
GetDeviceListFuncType это тип
GetDeviceList это переменная типа GetDeviceListFuncType ей присваиваем адрес функции GetDeviceList = GetDeviceListFuncType(GetProcAddress(hLib, "GetDeviceListFunc")); вызываем функцию BOOL z = GetDeviceList(a,b,c,d); |
|||
23
Кирпич
12.11.13
✎
15:51
|
что должно быть в параметрах, я не знаю.
ну и прежде чем вызывать функцию, проверь, есть она или нет. if (GetDeviceList == NULL) { ошибка }; |
|||
24
Кирпич
12.11.13
✎
15:52
|
а еще лучше книжку почитай
|
|||
25
Кирпич
12.11.13
✎
15:53
|
про указатели особенно
|
|||
26
Кирпич
12.11.13
✎
15:54
|
||||
27
Midaw
12.11.13
✎
15:58
|
что такое указатель, адрес и ссылка понимание у меня есть...
как перевести в C++ строки из C#? нужен аналог вот этого: public String strHostname; |
|||
28
Кирпич
12.11.13
✎
16:03
|
ты чо вообще делаешь?
|
|||
29
Кирпич
12.11.13
✎
16:04
|
и откуда тут C#
|
|||
30
Midaw
12.11.13
✎
16:05
|
(29) Из примеров пытаюсь переделать структуру из C# в C++.
|
|||
31
Кирпич
12.11.13
✎
16:08
|
нафига переделывать, может просто тупо скопировать или качнуть заголовочный файл?
http://budil.ru/tw_files2/urls_11/47/d-46087/7z-docs/26.pdf |
|||
32
Кирпич
12.11.13
✎
16:10
|
понимаю. без интернета плохо.
|
|||
33
Аденэсниг
12.11.13
✎
16:13
|
(0) напиши нормально. с отступами, комментариями и сам догонишь.
|
|||
34
Midaw
12.11.13
✎
16:15
|
(31) кроме DLL ничего нету. заголовочный файл сформировать с DLL возможно?
|
|||
35
Кирпич
12.11.13
✎
16:18
|
чья dll?
|
|||
36
Ubuntu810
12.11.13
✎
16:19
|
(27) "как перевести в C++ строки из C#? нужен аналог вот этого:
public String strHostname;" пиши так CString strHostname; или так char * strHostname; или так char strHostname[80]; |
|||
37
Кирпич
12.11.13
✎
16:23
|
(36) не путай его. он и так с трудом вменяемый.
(34)чья dll? для чего dll? короче ищем инструкции. |
|||
38
Ubuntu810
12.11.13
✎
16:23
|
(14) "HMODULE hLib = GetModuleHandle("PMDll.dll"); "
может стоит так написать HINSTANCE hDLL; .... hDLL = LoadLibrary("PMDll.dll"); |
|||
39
Ubuntu810
12.11.13
✎
16:25
|
(0) ТС вот тебе пример загрузки длл
HINSTANCE hDLL; // Handle to DLL LPFNDLLFUNC1 lpfnDllFunc1; // Function pointer DWORD dwParam1; UINT uParam2, uReturnVal; hDLL = LoadLibrary("MyDLL"); if (hDLL != NULL) { lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL, "DLLFunc1"); if (!lpfnDllFunc1) { // handle the error FreeLibrary(hDLL); return SOME_ERROR_CODE; } else { // call the function uReturnVal = lpfnDllFunc1(dwParam1, uParam2); } } |
|||
40
Кирпич
12.11.13
✎
16:26
|
(39) да уже давно загрузили.
проблема уже в другом |
|||
41
Ubuntu810
12.11.13
✎
16:29
|
(40) "проблема уже в другом" в чем конкретно?
|
|||
42
orefkov
12.11.13
✎
16:34
|
А всё-таки верный ответ в (1)
|
|||
43
Кирпич
12.11.13
✎
16:40
|
(41) проблема в том, что неясно в чем проблема
|
|||
44
Midaw
13.11.13
✎
11:27
|
изучил Dependency Walker. нашел библиотеки MFC. все подключилось и заработало. всем спасибо, все свободны.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |