1

我在使用 codegen 时遇到了一些问题(通过 gui 界面)。

我已经基于以下两个文件成功构建了一个非常简单的基于 c 的 .exe 程序。

码兰德.m

function r = coderand() %#codegen
r = rand();

主程序

#include <stdio.h>
#include <stdlib.h>
#include "coderand.h"
int main()
{
  printf("coderand=%g\n", coderand());
  return 0;
}

如果我现在尝试将 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++

4

1 回答 1

4

C++ 可以毫无困难地调用 C 函数,您只需让编译器知道 C 调用约定适用于该函数,如下所示:

extern "C" {
#  include "coderand.h"
}
于 2012-04-16T17:42:21.003 回答