- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试从 MATLAB 工具包中执行一些示例代码,'oscmex '.该工具包允许通过 MATLAB 使用 OSC 协议(protocol)进行通信。我认为这个问题是非特定的;它应该适用于以这种方式设置的任何工具包。
撇开原因不谈,我在启动和运行工具包时遇到了一些简单的问题。该工具包没有任何文档;只是一组六个 DLL 文件(在一个目录中)和一组四个 MATLAB '.m' 示例代码文件(在另一个目录中)。我过去使用的每个工具包要么是内置工具包,要么具有直观(半自动)安装过程。
下载工具包后,我尝试的第一件事就是简单地运行其中一个“.M”示例代码。这失败了,因为代码的第一行包含函数 osc(),MATLAB(目前)无法识别该函数。
所以,我想也许我需要将“.M”文件移动到与 DLL 相同的文件夹中;也许 MATLAB 会看到 DLL 中的函数。没有骰子。
因此,我意识到我必须在启动时以某种方式将 MATLAB 链接到 DLL。我尝试将 DLL 添加到一个文件夹,并在“pathdef.m”文件中添加一个条目。这也失败了。
我在某处读到我可以使用 loadlibrary() 函数加载 DLL 文件。所以,我尝试对 DLL 文件执行此操作。这在第一个文件上失败了:
>> loadlibrary('osc_free_address.dll')
Error using loadlibrary>lFullPath (line 587)
Could not find file osc_free_address.h.
我的选项开始用完了...我怎样才能启动并运行这组 DLL?
最佳答案
正在浏览这个图书馆的 web page这些 DLL 似乎只是 mex 的旧形式文件。
因此,它们应该不在共享库的上下文中使用(例如,使用loadlibrary
和calllib
),而是直接编译为 mex 文件.
为此,我建议采取以下步骤:
确保您已为您的 Matlab 配置了一个有效的 mex 编译器。
在 matlab 中,输入:
>> mex -setup
这将指导您完成配置过程。我知道您在 Windows 机器上工作,我通常使用 visual studio 编译器 - 最适合我。
这个库的 README 文件建议 OSC
requires liblo 0.22 or later. See http://plugin.org.uk/liblo/
确保您拥有此库并且它位于您的 LD_LIBRARY_PATH
中(有关详细信息,请参见例如 this question 或 mex docs)。
从 their repository 获取 OSC 库的源代码.
使用matlab编译源代码
>> mex -O -largeArrayDims osc_free_address.c
>> mex -O -largeArrayDims osc_free_server.c
所有 7 个 c 源文件依此类推。在对 c 文件进行 mex 处理后,您将拥有可以从 Matlab 运行的 mex 文件,就好像它们是常规函数一样。
您可能会发现使用 library's make file 很有用,正如 Andrew Mao 所建议的。
祝你好运
关于matlab - 将 MATLAB 链接到 DLL 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14789656/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!