从其他人中调用C包装函数

时间:2016-04-26 22:51:10

标签: c++ c wrapper

我无法运行以下代码。如何使用C包装器来获取具有相同属性的另一个函数的C ++函数?

它返回错误:

错误: library.cpp:11:5: error: use of undeclared identifier 'ifelseFn' ifelseFn(); ^

代码:

#include "library.h"
#include <iostream>

extern "C" void loopFn() {
    int sum = 0;
    std::cout << "Adding loop function call...\n";
    for (size_t i = 0; i < 5; i++) {
        sum += i;
    }
    std::cout << "Sum of value for for loop is: " << sum << std::endl;

    ifelseFn();
}

extern "C" void whileFn() {
    int sum = 0;
    size_t i = 0;
    std::cout << "Adding while function call...\n";
    while (i < 5) {
        sum += i;
        i++;
    }
    std::cout << "Sum of value for while loop is: " << sum << std::endl;
}

extern "C" void ifelseFn() {
    std::cout << "Adding ifelse function call...\n";
    if (0) {
        std::cout << "If portion!\n";
    } else {
        std::cout << "Else portion!\n";
    }
}

int main(int argc, char* argv[])
{
    loopFn();

    return 0;
}

通过添加此标头文件解决了问题。

library.h

#ifndef LIBRARY_H
#define LIBRARY_H

extern "C" void loopFn();
extern "C" void whileFn();
extern "C" void ifelseFn();

#endif

1 个答案:

答案 0 :(得分:4)

ifelseFn在使用后定义。

您应该在使用之前移动其定义,或者在第一次使用之前添加声明,例如: :

extern "C" void ifelseFn(); 

在文件的开头或包含的头文件中。