You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2017调用C函数遇LNK2019未解析外部符号错误

解决LNK2019:未解析外部符号_triangulate的问题

嘿,这个LNK2019错误其实是链接器在找triangulate函数的实现时,找不到对应的二进制代码。你已经用extern "C"搞定了C/C++名称修饰的问题,那接下来可以从这几个方向排查:

1. 把Triangle的C源码加入你的项目

链接器需要看到triangulate的实现代码才行,你得把下载到的triangle.c文件添加到GLTests项目里:

  • 右键你的GLTests项目 → 添加 → 现有项
  • 找到你下载的triangle.c文件,选中它添加到项目中

添加之后,VS编译的时候会自动把这个C文件编译成目标文件,链接时就能找到_triangulate符号了。

2. 确保C源码用C规则编译

因为你是在C++项目里编译C代码,得给triangle.c单独设置编译规则:

  • 右键项目里的triangle.c文件 → 属性
  • 跳转到配置属性 → C/C++ → 高级,把编译为改成C代码(/TC)
  • 点确定之后重新编译项目

这样能避免C编译器用C的语法规则去编译C源码,减少不必要的兼容性问题。

3. 核对函数声明和实现的一致性

打开triangle.h和triangle.c,仔细检查triangulate的函数声明和实现是不是完全一致:

  • 参数的类型、数量,返回值类型都得一模一样
  • 比如头文件里声明的是void triangulate(int*, double*),那源码里的实现也得是void triangulate(int*, double*),不能有任何差异

要是声明和实现对不上,链接器也认不出对应的符号。

4. 用预编译库的话要配置链接器(如果适用)

如果你没直接加源码,而是用编译好的静态/动态库:

  • 右键项目 → 属性 → 链接器 → 输入,在附加依赖项里加上对应的库文件(比如triangle.lib)
  • 再到链接器 → 常规里,把库文件所在的路径添加到附加库目录里

不过个人更推荐直接加源码到项目,这样排查问题会更简单。

最后一步验证

做完上面的操作后,先清理一下项目(菜单里点生成→清理解决方案),然后重新生成整个解决方案,应该就能搞定这个LNK2019错误了。


内容的提问来源于stack exchange,提问作者Connor McDermott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:56:05