未找到使用C SDK for IBM Watson的主题的回调

未找到使用C SDK for IBM Watson的主题的回调,c,ibm-cloud,iot,watson-iot,C,Ibm Cloud,Iot,Watson Iot,我从 我在Watson IOT上定义我的设备 我使用deviceSample.C创建我的C设备代码段,它会发送一个事件 {“d”:{“SensorID”:“Test”,“Reading”:99}} 我正确地看到Watson IoT平台中的事件 但是当我试图从我的C应用程序管理事件时,我发现了以下错误 iotp_async.c iotp_客户端消息到达1320:错误:未找到主题的回调。主题:iot-2/type/semaforo/id/1002/evt/status/fmt/json 从我的客户端

我从

  • 我在Watson IOT上定义我的设备
  • 我使用deviceSample.C创建我的C设备代码段,它会发送一个事件 {“d”:{“SensorID”:“Test”,“Reading”:99}}
  • 我正确地看到Watson IoT平台中的事件
  • 但是当我试图从我的C应用程序管理事件时,我发现了以下错误

    iotp_async.c iotp_客户端消息到达1320:错误:未找到主题的回调。主题:iot-2/type/semaforo/id/1002/evt/status/fmt/json

    从我的客户端日志中,我得到以下消息

    添加了iotp_客户端_setHandler 1176:INFO:Handler(type=AppEvent)。Topic=iot-2/type/+/id/+/evt/+/fmt/+

    此消息是否表示我的代码已订阅该事件? 在我的C代码中,我使用

    IoTPApplication_setEventHandler
                   (application, applicationEventCallback, 
                            devType, devId, eventName, format
                   );
    
    我的applicationEventCallback在哪里

    void  applicationEventCallback (char* type, char* id, 
               char* eventName, char *format, void* payload, size_t payloadSize);
    

    为什么我的客户端无法正确管理传入事件?

    GigHub项目中提供了该问题的修复程序:

    详情请参阅:


    多亏了Ranjan的协作和修复

    从我所看到的,您提供了回调的原型,而不是实际的回调函数。似乎需要像在示例中一样定义函数回调。函数声明/原型不同于函数声明。除此之外,它还可以解释错误“callbacknotfound”。对于函数定义,请尝试一些基本的操作,如:void applicationEventCallback(char*类型、char*id、char*eventName、char格式、void有效负载、size\u t payloadSize){printf(“我的回调被…调用了”;}谢谢sasha。显然,函数已经定义。我只放了一个原型机,不要把柱子放大。我定义的函数可以在下面看到:void applicationEventCallback(char*type,char*id,char*eventName,char格式,void负载,size\u t payloadSize){fprintf(stdout,“接收的应用程序事件:\n”);fprintf(stdout,“type=%s id=%s eventName=%s format=%s Len=%d\n”,type,id,eventName,format,(int)payloadSize);fprintf(stdout,“有效负载:%s\n”,(char*)有效负载);}