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

C# WinForm接入Linphone SDK报linphone.dll找不到异常问题咨询

Linphone SDK 在Windows Forms项目下加载异常解答

官方发布的Linphone桌面版NuGet包完全支持Windows Forms项目,不需要自行下载源码通过Cmake编译构建,你遇到的DllNotFoundException:linphone.dll问题是NuGet包原生依赖的自动拷贝逻辑在WinForms项目类型下未生效导致的,和项目类型兼容性无关。

问题根因

UWP项目可正常运行是因为UWP的NuGet依赖处理机制会自动将对应架构的原生SDK文件完整部署到运行目录;而WinForms属于传统桌面项目类型,当前Linphone NuGet包没有针对该项目类型配置原生文件的自动拷贝规则,多数用户仅单独拷贝linphone.dll单个文件,漏了它依赖的数十个配套原生dll,最终触发加载失败。

解决步骤

  • 将项目生成目标平台从默认的Any CPU改为和你安装的SDK匹配的具体架构(x64/x86二选一,Linphone原生dll不支持Any CPU架构加载),确认安装的是带win-desktop标识的桌面版SDK包,不要误用UWP专属NuGet包。
  • 打开本地NuGet包缓存路径,找到对应Linphone版本下的原生dll目录,对应路径为runtimes/win-x64/native(x64架构)或runtimes/win-x86/native(x86架构),将该目录下所有dll文件全部添加到你的WinForms项目中。注意:只要漏拷任意一个依赖dll,CLR都会抛出找不到linphone.dll的异常,禁止只拷贝linphone.dll单个文件。
  • 在Visual Studio解决方案资源管理器中选中刚添加的所有dll,将属性面板中的「复制到输出目录」选项设置为「如果较新则复制」,「生成操作」设置为「无」。
  • 还原之前修改过的LinphoneWrapper.cs文件,保持默认的[DllImport("linphone")]声明即可,不需要修改dll加载路径,随意修改路径反而会触发额外的加载错误。
  • 清理之前手动零散放到bin目录下的dll文件,重新生成项目后即可正常运行呼叫相关逻辑。

补充说明

仅当你需要自定义SDK功能、裁剪不需要的编解码器/功能模块、适配特殊系统版本时,才需要下载源码通过Cmake自行编译构建,常规WinForms二次开发直接使用官方NuGet包按上述步骤配置即可满足需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:36:20