【问题标题】:How to use a C++ dll in Windows Phone 8.1 XAML App within C++ Runtime Component如何在 C++ 运行时组件中的 Windows Phone 8.1 XAML 应用程序中使用 C++ dll
【发布时间】:2014-12-30 22:21:07
【问题描述】:

我想在我的 C# windows phone 8.1 XAML Visual Studio 项目中使用 C++ dll(为 arm、x86 编译)。

我创建了一个 C++ 运行时组件来与我的 C++ 代码交互。此代码需要一个预编译的 dll。我将我的 lib 文件添加到我的项目设置中。编译运行良好。 如果我使用 windows phone 8.1 模拟器启动我的应用程序,我会得到:

The specified module could not be found. (Exception from HRESULT: 0x8007007E)

我的 Visual Studio 项目结构:

  • c#
    • Windows Phone 项目
    • Windows 项目
    • 共享 XAML
  • 托管 C++
    • RuntimeComponent Windows Phone
    • 运行时组件窗口
    • 共享 C++ 代码(此处使用的 dll)

我尝试过的事情:

  • 我将 dll 拖放到我的 C++ 项目中,并将内容的属性更改为 true。
  • 我将 dll 拖放到我的 C# 项目中,并启用了将 dll 复制到输出目录的选项

那么,如何在 C++ 运行时组件项目中使用 .lib/.dll 库?

更多细节:

【问题讨论】:

  • this 你想做什么?
  • 不,我不想在 C# 代码中直接调用 C++ 代码。 C# 代码调用运行时组件方法(托管 c++),在此托管 c++ 代码中,我想使用 C++ dll。
  • 要与库链接,您可能必须将 .lib 文件添加到链接器/输入/附加依赖项下的项目配置中。
  • 我已经在那里添加了lib文件
  • 您是否也右键单击 dll > 包含在项目中?

标签: c# c++ xaml dll windows-phone-8.1


【解决方案1】:

我设法让它工作。

您必须将 dll 导入 C# 项目。重要的是 dll 位于 C# 项目的根目录中,并且:copy to output directory激活。

【讨论】:

  • 您能否分享更多详细信息,或者将您的样板文件发布到 GitHub 上?我正在尝试使其正常工作,但出现 System.Runtime.InteropServices.COMException (0x80004005):尝试从 RT 组件调用任何内容时出现未指定错误。
  • 只需将您的 dll 拖放到您的 C# 项目中(基于屏幕截图:进入 App3.WindowsPhone)但不在任何文件夹中。就是这样。
  • 是的,这就是我所做的,但后来我得到了另一个错误。然后我从头开始,在 C++ 中留下尽可能多的代码,只是将必要的事件和对交换链面板的引用从 C# 转发到 C++,现在它正在工作。
  • 我已经添加了与ffmpeg相关的第三方c库,例如avcodec-57.dll、avutil.dll等等。我已遵循所有步骤。但我仍然收到以下错误。 “App1.WindowsPhone.exe 中发生了‘System.IO.FileNotFoundException’类型的异常,但未在用户代码中处理”有人知道破解它吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-20
  • 2015-06-19
相关资源
最近更新 更多