none
プラットフォームx64のアプリに外部からx64ライブラリィを使用したところ、アプリ終了時に(kernel32.dll)で例外がスローされました、と表示される RRS feed

  • 質問

  • TektronixのVISA(virtual instrument software architecture)ライブラリィをVisulaStudio2019のC++デスクトップアプリに、組み入れたところ、x86プラットフォームでは正常に動きましたが、x64では、終了時に例外ハンドラに捕まります。

    x64プラットフォームで、tkVisa64.libをリンクして実行すると、VISAライブラリィの関数は実行出来ています。

    アプリケーション終了時に、例外エラーが発生しています。

    また、エラーの詳細を見ると(kernel32.dll)と出てきます。

    回避方法を教えてください。

    このエラーは、オシロスコープがPCに接続されてなくても発生します。

    Tektronixのドライバーは、以下からダウンロードしています。

    以下、やった内容とソースを記します。

    追加のインクルードディレクトリ:C:\Program Files\IVI Foundation\VISA\Win64\Include;%(AdditionalIncludeDirectories)
    追加のライブラリディレクトリ:C:\Program Files\IVI Foundation\VISA\Win64\Lib_x64\msc
    追加の依存ファイル:tkVisa64.lib;tkVISA64.lib


    C++ソース

    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <assert.h>
    #include <time.h>
    #include <memory.h>
    #include <visa.h>

    int main()
    {
    ViSession rm;
    ViStatus status;
    ViChar buffer[256];

    // Open a d efault Session
    status = viOpenDefaultRM(&rm);
    if (status < VI_SUCCESS) goto error;

    return 0;

    error:
    // Report error and clean up
    viStatusDesc(vi, status, buffer);
    fprintf(stderr, "failure: %s\n", buffer);

    return 1;
    }



    • 編集済み grayowl93 2021年12月3日 3:59
    2021年12月2日 12:11