我在使用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"
}

09-07 09:06