Проблема с работой программы в разных IDE

262
11 сентября 2017, 05:27

Доброго времени суток! В свое время написал простенькое консольное приложение для проверки управления цифровыми TTL линиями платы L780 от L Card в легковесной IDE Dev-C++ 5.11 TDM-GCC 4.9.2. TTL логика работала хорошо.
Пришло время дописать, добавить интерфейс и тд. Но в Visual Studio 2008 как и в Qt MinGW 5.3.0, начиная с определенного момента, абсолютно тот же код, не работает как надо. Т.е. проходит инициализация платы, конфиг успешный, а значение по цифровым линиям не передается. При этом в Dev-C++ на этой же машине все работает хорошо. Система Windows 7 x86. В чем может быть проблема и как ее можно решить?

#define INITGUID
#include <iostream>
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <clocale>
#include <iomanip>
#include <objbase.h>
#include <math.h>
#include "include\ioctl.h"
#include "include\ifc_ldev.h"
#include "include\create.h"
using namespace std;
typedef IDaqLDevice* (*CREATEFUNCPTR) (ULONG Slot);
CREATEFUNCPTR CreateInstance;
HINSTANCE CallCreateInstance(char* name)
{
   HINSTANCE hComponent = ::LoadLibraryA(name);
   if(hComponent==NULL) { return 0; }
   CreateInstance = (CREATEFUNCPTR)::GetProcAddress(hComponent,"CreateInstance");
   if(CreateInstance==NULL) { return 0; }
   return hComponent;
}
using namespace std;

int main(int argc, char *argv[])
{
    PLATA_DESCR pd;
    ULONG slot = 0;
    SLOT_PAR sl;
    ULONG status;
    char confirm;
    CallCreateInstance("lcomp.dll");
    LUnknown* pIUnknown = CreateInstance(slot);
    if(pIUnknown == NULL) { return 1; }
    IDaqLDevice* pI;
    HRESULT hr = pIUnknown->QueryInterface(IID_ILDEV,(void**)&pI);
    if(!SUCCEEDED(hr)) {  return 1; }
    pIUnknown->Release();
    pI->OpenLDevice(); 
    pI->LoadBios("l780"); 
    pI->GetSlotParam(&sl);
    pI->ReadPlataDescr(&pd);
    if (sl.BoardType == PCIA || sl.BoardType == PCIB || sl.BoardType == PCIC)
    {
      cout << "Serial Number    " << pd.SerNum << endl;
      cout << "Board Name       " << pd.BrdName <<endl;
      cout << "Rev              " << pd.Rev << endl;
    }
    ASYNC_PAR pp;
    pp.s_Type = L_ASYNC_TTL_CFG;
    pp.Mode = 1;
    status = pI -> IoAsync(&pp);
    if (status != L_SUCCESS) cout << "FAIL" << endl;
    else cout << "ASYNC_TTL_CFG SUCCESS!" << endl;
    cin >> confirm;

    pp.s_Type = L_ASYNC_TTL_OUT;
    pp.Data[0] = 0x0007;
    pI -> IoAsync(&pp);

    cin >> confirm;

    pI->CloseLDevice();
    return 0;
}
READ ALSO
message queue в нескольких потоках

message queue в нескольких потоках

Использую очередь сообщений и столкнулся с проблемой

260
Создать массив экземпляров класса

Создать массив экземпляров класса

Добрый день, вот есть у меня несколько экземпляров класса, могу ли я в цикле засунуть их в массив? к примеру

283
В чём смысл существования reinterpret_cast?

В чём смысл существования reinterpret_cast?

В C++ существует оператор reinterpret_cast, смысл которого заключается в приведении между типами, несовместимыми друг с другом

233
Редактирование шаблона в админке (YII2)

Редактирование шаблона в админке (YII2)

Где можно отредактировать вид таблицы в админке? В исходнике страницы указывается такой путь:

328