Member 13277231 Ответов: 1

Нарушение доступа в моей библиотеке DLL после createparameter()


CommandPtr pCmd = NULL;
_ParameterPtr Var1;
Var1 = pCmd->CreateParameter(_bstr_t("@T"), adInteger, adParamOutput, 0, codRet);


Почему я получаю письмо о нарушении доступа?.. ошибка в моей dll на этой строке? Как мне это исправить?
Тнх. Я использую VS 2015.

Это полный код:

 CommandPtr pCmd = NULL;
_ConnectionPtr pConnection = NULL;
_bstr_t strMessage, strAuthorID;

::CoInitialize(NULL);

long codRet = -1;

try {

    _ParameterPtr Var1;


    TESTHR(pConnection.CreateInstance(__uuidof(Connection)));
    hr = pConnection->Open("Driver={SQL Server};Server=conn_string", "", "", adConnectUnspecified);

    pConnection->CursorLocation = adUseClient;
    TESTHR(pCmd.CreateInstance(__uuidof(Command)));
    pCmd->CommandText = PrcName;
    pCmd->CommandType = adCmdStoredProc;

    Var1 = pCmd->CreateParameter(_bstr_t("@T"), adInteger, adParamOutput, 0, codRet);


Что я уже пробовал:

Пытаюсь использовать свою библиотеку dll в приложении 3d party. DLL успешно скомпилирована.

Richard Deeming

Просто потому, что это компилирует, это не обязательно означает, что это правильный! :)

Member 13277231

конечно... Так что же может быть ошибкой?

Richard Deeming

Есть все виды возможностей. Но, не видя соответствующих частей вашего кода, очень мало шансов, что кто-то сможет сказать вам, в чем проблема.

Нажмите на зеленую ссылку "улучшить вопрос" и добавьте к этому вопросу соответствующие части вашего DLL-кода.

Тогда вам просто нужно будет дождаться кого-то, кто "делает" C++ (Я не знаю) чтобы посмотреть, смогут ли они определить проблему.

Member 13277231

Я сделал. Спасибо.

1 Ответов

Рейтинг:
0

Member 13277231

CreateParameter(_bstr_t("@T"), adInteger, adParamOutput, 0, codRet);

Ошибка, по-видимому, была в 4-м параметре, который является размером. Я поставил 1 вместо 0 и никакой ошибки :)

Метод CreateParameter (ADO) | Microsoft Docs[^]