C++ 佳能SDK初始化崩溃

C++ 佳能SDK初始化崩溃,c++,sdk,crash,access-violation,C++,Sdk,Crash,Access Violation,我目前尝试在C++中使用佳能SDK。 这是我第一次使用SDK和IM在C++中做乞丐。 问题是,当我尝试使用EdsInitializeSDK()函数初始化SDK时,它会立即崩溃,下面是错误消息: 在CameraTest.exe中的0x00007FFA34E0121C(EDSDK.dll)处引发异常:0xC0000005:访问冲突读取位置0x00000000B44D4740 CameraTest.exe中0x00007FFA34E0121C(EDSDK.dll)处未处理的异常:0xC0000005:

我目前尝试在C++中使用佳能SDK。 这是我第一次使用SDK和IM在C++中做乞丐。

问题是,当我尝试使用
EdsInitializeSDK()
函数初始化SDK时,它会立即崩溃,下面是错误消息:

在CameraTest.exe中的0x00007FFA34E0121C(EDSDK.dll)处引发异常:0xC0000005:访问冲突读取位置0x00000000B44D4740

CameraTest.exe中0x00007FFA34E0121C(EDSDK.dll)处未处理的异常:0xC0000005:访问冲突读取位置0x00000000B44D4740

以下是完整的代码:

#include "stdafx.h"
#include "iostream"
#include "EDSDK.h"
#include "EDSDKTypes.h"
#include "CameraModel.h"
#include "CameraModelLegacy.h"
#include "CameraController.h"
#include "CameraEventListener.h"

using namespace std;

int main(void)
{
    EdsError err = EDS_ERR_OK;
    EdsCameraListRef cameraList = NULL;
    EdsUInt32 count = 0;
    EdsCameraRef camera = nullptr;
    bool isSDKLoaded = false;

    err = EdsInitializeSDK();
    system("pause");
    if (err == EDS_ERR_OK) {
        cout << "SDK INITIALISED" << endl;
    } else {
        cout << "SDK INITIALISATION FAILED WAIT FOR EXIT" << endl;
        system("pause");
        exit(84);
    }
    cout << err << endl;
    err = EdsGetCameraList(&cameraList);
    cout << err << endl;
    if (err == EDS_ERR_OK) {
        cout << "Camera List Ok" << endl;
        err = EdsGetChildCount(cameraList, &count);
        cout << "Count : " << count << endl;
        if (count == 0) {
            err = EDS_ERR_DEVICE_NOT_FOUND;
        }
    }
    else {
        cout << "No Camera List" << endl;
    }
    if (err == EDS_ERR_OK) {
        cout << "It worked" << endl;
        err = EdsGetChildAtIndex(cameraList, 0, &camera);
    } else {
        cout << "It didnt worked" << endl;
    }
    system("pause");
}
#包括“stdafx.h”
#包括“iostream”
#包括“EDSDK.h”
#包括“EDSDKTypes.h”
#包括“CameraModel.h”
#包括“CameraModelLegacy.h”
#包括“CameraController.h”
#包括“CameraEventListener.h”
使用名称空间std;
内部主(空)
{
EdsError err=EDS_err_OK;
EdsCameraListRef cameraList=NULL;
EdsUInt32计数=0;
EdsCameraRef摄像机=零PTR;
bool-issdkloadded=false;
err=EdsInitializeSDK();
系统(“暂停”);
如果(err==EDS\U err\U OK){

好的,所以答案很简单。 当我连接相机时,会出现一个名为“EOS实用程序3”的软件。 这就是问题所在,当我关闭它(并确保它真正关闭,而不仅仅是还原),它就可以工作了。 谢谢你的帮助。
(我使用的是佳能EDSDK版本3.6.1和佳能EOS 1300D)

尝试更简单的方法:只需调用初始化函数和发行版函数。并检查这两个函数的文档。@ZDF谢谢您的回答。我已经尝试过了,但它仍然崩溃。在调用初始化函数之前,您应该设置什么?驱动程序?安装了其他DLL吗?