Не работает trans2quik.dll

Страницы: 1
RSS
Не работает trans2quik.dll, попытка обратиться к quik через python
 
Возможно кто-то сталкивался или возникнут соображения, что еще можно предпринять. Суть такая:

- windows 10 x64
- quik 11.4.0.54, установленный в каталог C:\QUIKJunior\.
- В этом же каталоге лежат файлы TRANS2QUIK.DLL, TRANS2QUIK.LIB.из архива Trans2QuikAPI_1.5_x64.zip

Соединиться с quik через PyQUIK-1.0 не удается абсолютно. Решил посмотреть, какую ошибку возвращает dll. Написал следующий код:
Код
import ctypes
from ctypes import c_long, c_char_p, c_double, POINTER, create_string_buffer

# Загрузка DLL
trans2quik = ctypes.WinDLL(r"C:\QUIKJunior\TRANS2QUIK.DLL")

# Определение функции SEND_SYNC_TRANSACTION
send_sync_transaction = trans2quik.TRANS2QUIK_SEND_SYNC_TRANSACTION
send_sync_transaction.argtypes = [
    c_char_p,           # lpstTransactionString
    POINTER(c_long),    # pnReplyCode
    POINTER(c_long),    # pdwTransId
    POINTER(c_double),  # pdOrderNum
    c_char_p,           # lpstrResultMessage
    ctypes.c_ulong,     # dwResultMessageSize
    POINTER(c_long),    # nTransactionExtendedErrorCode
    c_char_p,           # lpstErrorMessage
    ctypes.c_ulong      # dwErrorMessageSize
]
send_sync_transaction.restype = c_long

# Пример строки транзакции
transaction = "TRANS_ID=1;ACCOUNT=59257;CLASSCODE=TQBR;SECCODE=SBER;ACTION=NEW_ORDER;TYPE=L;OPERATION=B;PRICE=100.50;QUANTITY=10"
transaction_str = transaction.encode("windows-1251")

# Буферы для сообщений
result_msg = create_string_buffer(256)
error_msg = create_string_buffer(256)

# Параметры для возвращаемых значений
reply_code = c_long()
trans_id = c_long()
order_num = c_double()
extended_error_code = c_long()

# Вызов функции
result = send_sync_transaction(
    transaction_str,
    ctypes.byref(reply_code),
    ctypes.byref(trans_id),
    ctypes.byref(order_num),
    result_msg,
    ctypes.sizeof(result_msg),
    ctypes.byref(extended_error_code),
    error_msg,
    ctypes.sizeof(error_msg)
)

# Вывод результатов
print("Результат:", result)
print("Код ответа:", reply_code.value)
print("ID транзакции:", trans_id.value)
print("Номер заявки:", order_num.value)
print("Сообщение о результате:", result_msg.value.decode("windows-1251"))
print("Сообщение об ошибке:", error_msg.value.decode("windows-1251"))
print("Код расширенной ошибки:", extended_error_code.value)
 

Результат:
Код
C:\Trading\tests>python test_dll_ctypes_2.py
Результат: 7
Код ответа: 0
ID транзакции: 0
Номер заявки: 0.0
Сообщение о результате:
Сообщение об ошибке:
Код расширенной ошибки: 0  

Ладно. Может какая несовместимость с питоном. Их архива Trans2QuikAPI_1.5_x64.zip достаю test3. Оно же родное, от разработчиков.
Что имею в результате:
Код
C:\Trading\tests\test_trans2quik>dir /b
settings.txt
start.bat
test_x64.exe

C:\Trading\tests\test_trans2quik>type settings.txt
C:\QUIKJunior
C:\Trading\tests\test_trans2quik>dir /b C:\QUIKJunior\trans2quik.*
TRANS2QUIK.DLL
TRANS2QUIK.LIB

C:\Trading\tests\test_trans2quik>start.bat

C:\Trading\tests\test_trans2quik>del *.log
Не удается найти C:\Trading\tests\test_trans2quik\*.log

C:\Trading\tests\test_trans2quik>test_x64.exe S trr.in 1000

Необработанное исключение: System.DllNotFoundException: Не удается загрузить DLL "TRANS2QUIK.DLL": Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)
   в test3.test_q.connect(String lpcstrConnectionParamsString, Int32& pnExtendedErrorCode, Byte[] lpstrErrorMessage, UInt32 dwErrorMessageSize)
   в test3.test_q.connect_test(Boolean FinalPause)
   в test3.Program.Main(String[] args) 
Может быть у кого-то есть мысли, чего ему не хватает?
 
Dmitry I Gornev, добрый день.

1. В Вашем коде отсутствует вызов TRANS2QUIK_CONNECT для соединения с терминалом QUIK.
2. В директории с тестовым приложением (test_x64.exe) необходимо разместить библиотеку trans2quik.dll.
Страницы: 1
Читают тему
Наверх