我在使用Codegen时遇到了一些问题(通过gui接口(interface))。
我已经基于以下两个文件成功构建了一个非常简单的基于c的.exe程序。
代码库
function r = coderand() %#codegen
r = rand();
main.c
#include <stdio.h>
#include <stdlib.h>
#include "coderand.h"
int main()
{
printf("coderand=%g\n", coderand());
return 0;
}
如果我现在尝试将main.cpp中的相同代码更改为main.c,
main.cpp
#include <stdio.h>
#include <stdlib.h>
#include "coderand.h"
void main(int argc, char **argv)
{
printf("coderand=%g\n", coderand());
}
我收到以下编译错误。
main.obj : error LNK2019: unresolved external symbol "double __cdecl coderand(void)" (?coderand@@YANXZ) referenced in function _main 25 F:\CoderTest\coderand.exe : fatal error LNK1120: 1 unresolved externals
任何帮助,不胜感激。
编辑:-由我自己解决...
对于那些遭受同样问题的人...
编码器->更多设置->所有设置->高级->语言..将C更改为C++
最佳答案
C++可以轻松地调用C函数,您只需要让编译器知道C调用约定适用于此函数,如下所示:
extern "C" {
# include "coderand.h"
}