Возможно кто-то сталкивался или возникнут соображения, что еще можно предпринять. Суть такая:
- windows 10 x64
- quik 11.4.0.54, установленный в каталог C:\QUIKJunior\.
- В этом же каталоге лежат файлы TRANS2QUIK.DLL, TRANS2QUIK.LIB.из архива Trans2QuikAPI_1.5_x64.zip
Соединиться с quik через PyQUIK-1.0 не удается абсолютно. Решил посмотреть, какую ошибку возвращает dll. Написал следующий код:
Результат:
Ладно. Может какая несовместимость с питоном. Их архива Trans2QuikAPI_1.5_x64.zip достаю test3. Оно же родное, от разработчиков.
Что имею в результате:
Может быть у кого-то есть мысли, чего ему не хватает?
- 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) |