从main.c调用viewcontroller.m作为按钮的错误

时间:2013-05-25 04:53:35

标签: ios6

这是我的main.c

static int l_psd_stop_f(void)
{
    int res;
    int fd_psd_socket;

    if(pthread_mutex_lock(&l_mutex_wrc)) {
        LOG_ERR("Can not lock WRC mutex");
        return -1;
    }
    fd_psd_socket = l_s_wrc.fd_psd;
    l_s_wrc.fd_psd = -1;
    if(pthread_mutex_unlock(&l_mutex_wrc)) {
        LOG_ERR("Can not unlock WRC mutex");
        return -1;}
    res = l_stop_psd_receiver_f(fd_psd_socket);
    fd_psd_socket = -1;
    if(res < 0) {
        LOG_ERR("Can not close PSD socket %d : %s", res, strerror(errno));
        return -1;
    }

    return 0;
}

我想打电话并参考这些代码,但是当我点击在x-code ipad模拟器上运行的按钮时,它会给我带来错误。

这是ViewController.m

- (IBAction)disconnect:(id)sender {

[self l_psd_stop_f];}

1 个答案:

答案 0 :(得分:0)

而不是在main.c中声明“l_psd_stop_f”,将它放在ViewController.m中并声明如下:

- (int) l_psd_stop_f
{
    int res;
    int fd_psd_socket;
    ...
    ...
    ...
}

然后您的“disconnect”操作将编译,而应该工作。

通过在main.c中将其声明为“static int l_psd_stop_f(void)”,它是一个C函数,可能只适用于在main.c中调用它的任何函数。但是您的视图控制器无法使用该功能。

所以我要做的就是将C函数更改为Objective-C方法,该方法是ViewController类的成员。