Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2011 12:22:05

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

Есть DLL c таким кодом
#include “stdafx.h”
#include “NSNetwork.h”

extern “C” __declspec(dllexport) int __stdcall CalcNeuralNet(
LPCWSTR dllPath_u, LPCWSTR weightsPath_u,
double* inputs, double* outputs)
{
// Преобразуем строки из Unicode в обычные
CString dllPath (dllPath_u);
CString weightsPath (weightsPath_u);

// Создание сети
NSRecallNetwork nn(dllPath);
if (!nn.IsLoaded()) return (1);

// Загрузка весов
if (nn.LoadWeights(weightsPath) != 0) return (2);

// Подача входных данных и расчет выходов
if (nn.GetResponse(1, inputs, outputs) != 0) return (3);

return 0;
}

название DLLM.dll



пишу в питоне

from ctypes import *
lib=cdll.DLLM

inputData=“путь до входных значние”
outputdata = “путь до выходных”
lib.getResponse(inputData, outputData)

шелл пишет NameError: name ‘inputData’ is not defined

ну в приципе в теорий мы же не определил что они буду передоваться наверна из за этого
если в шел пишу проста lib.getResponse
<_FuncPtr object at 0x02847120>
тоесть вроде как он функцию нашел но вот как ей передать данные
люди помогите обьясние очень надо готов отблагодарить!



Офлайн

#2 Дек. 25, 2011 12:37:05

Actor
От:
Зарегистрирован: 2010-10-10
Сообщения: 39
Репутация: +  0  -
Профиль  

DLL ctypes Вызов функции с параметрами HELP

с этим дела не имел, но искал бы в первую очередь тут



Офлайн

#3 Дек. 25, 2011 13:07:59

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

Да понимаете спасибо за ответ за время потраченной тут проблема насоколько я понимаю в том как передать параметры длл на С++ сделана ,



Офлайн

#4 Дек. 25, 2011 13:09:31

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

from ctypes import  *
.......

inputData=u"путь до входных значние"
outputdata = u"путь до выходных"
import numpy as np
d1=np.zeros(5,dtype='d')
d2=np.zeros(5,dtype='d')
lib.getResponse(inputData, outputData,d1.ctypes.data,d2.ctypes.data)
те
делайте строки - unicode
И куда вы выкинули еще два аргумента функции?

шелл пишет NameError: name ‘inputData’ is not defined - значит с ошибками пишете имя



Отредактировано (Дек. 25, 2011 13:10:04)

Офлайн

#5 Дек. 25, 2011 13:30:50

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

да здесь моя опечатка со входными исходными значения спасибо за ответ очень благодарен , not defined да прощу прощения опечатался .
-*- coding: cp1251 -*-
from ctypes import *
lib=cdll.DLLM
inputs=u“путь до входных значние”
outputs = u“путь до выходных”

import numpy as np
d1=np.zeros(5,dtype='d')
d2=np.zeros(5,dtype='d')
lib.getResponse(1,inputs, outputs,d1.ctypes.data,d2.ctypes.data)


WindowsError: exception: access violation reading 0x00000001
про строки unicode буду разбираться спс за помощь ответы жду комментариев



Офлайн

#6 Дек. 25, 2011 13:33:26

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

я так понимаю что ему не нравятся аргументы в вызове



Офлайн

#7 Дек. 25, 2011 14:27:14

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

from ctypes import *
lib=cdll.NeuroSolutionsAdapter
inputs=u“C:\Python27\DLL1\InputData.txt”
outputs = u“C:\Python27\DLL1\Desired.txt”
weightsPath= u“C:\Python27\DLL1\DLLM.nsw”
dllpath=u“C:\Python27\DLL1\DLLM.dll”
import numpy as np
d1=np.zeros(5,dtype='d')
d2=np.zeros(5,dtype='d')
lib.NSRecallNetwork(dllpath,d2.ctypes.data)
lib.loadWeights(weightsPath,d1.ctypes.data)
lib.CalcNeuralNet(dllPath,d2.ctypes.data, weightsPath,d2.ctypes.data, inp,out)
AttributeError: function ‘NSRecallNetwork’ not found
интересно оказываесться in это оператор и переменную in нельзя использовать=)))))))))
я конечно понимаю что скорей всего я опечатася в названии функции но я пробовал разные варинаты а он ругаеться !!



Офлайн

#8 Дек. 25, 2011 15:02:07

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

lib.CalcNeuralNet(inputs,d2.ctypes.data, outputs,d1.ctypes.data)
опять не может найти функциюAttributeError: function ‘CalcNeuralNet’ not found ну как так
from ctypes import *
lib=cdll.NeuroSolutionsAdapter
inputs=u“C:\Python27\DLL1\InputData.txt”
outputs = u“C:\Python27\DLL1\DesiredData.txt”
weightsPath= u“C:\Python27\DLL1\DLLM.nsw”
dllpath=u“C:\Python27\DLL1\DLLM.dll”
import numpy as np
d1=np.zeros(5,dtype='d')
d2=np.zeros(5,dtype='d')
lib.CalcNeuralNet(inputs,d2.ctypes.data, outputs,d1.ctypes.data)



Офлайн

#9 Дек. 25, 2011 15:27:33

2rei
От:
Зарегистрирован: 2011-12-24
Сообщения: 21
Репутация: +  0  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

тут я вызываю длл не редактируемую которая как исходная
попробовал заменит функцию NSRecallNetwork на CreateNetwork
вроде отработала однако же результата отработала или нет можно узнать тока на выходе а выход выдает следующие

# -*- coding: cp1251 -*-
from ctypes import *
lib=cdll.DLLM
AD=cdll.NeuroSolutionsAdapter
inputs=u“C:\Python27\DLL1\InputData.txt”
outputs = u“C:\Python27\DLL1\DesiredData.txt”
weightsPath= u“C:\Python27\DLL1\DLLM.nsw”
dllpath=u“C:\Python27\DLL1\DLLM.dll”
import numpy as np
d1=np.zeros(5,dtype='d')
d2=np.zeros(5,dtype='d')
lib.createNetwork(dllpath,d1.ctypes.data)
lib.loadWeights(weightsPath,d2.ctypes.data)
lib.getResponse(100, inputs,d1.ctypes.data,outputs,d2.ctypes.data)

WindowsError: exception: access violation reading 0x00000064
непонятный зверь



Офлайн

#10 Дек. 25, 2011 15:30:48

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

DLL ctypes Вызов функции с параметрами HELP

Похоже вы прыгаете по директориям, а явного пути к dll не указали. В этом случае у вас после каждого чиха может перестать грузиться dll. Пути опять у вас неправильно указаны нужны двойные слеши. d1=np.zeros(5,dtype='d') 5 я указал для примера - вам надо выяснить какого размера ожидаются области памяти и проч и проч…

Если вам срочно нужно - попросите нормального питонщика какого - да вышлите ему код полностью чтоб вам собрал вызов функции из dll.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version