1

好的,所以我一直在使用 Visual Studio Express 2013 为 Pure Data 开发外部组件,一切都很好。一切都可以编译,工作等等。

但是现在我面临着必须对 Android 的外部进行特定的编译(与 libPD 一起使用),这意味着我将不得不使用 Android NDK。我为 NDK 找到的所有指南都使用 Eclipse,因此我决定将代码放入 Eclipse 并开始使用它。

我之前安装了 Eclipse 以尝试在 Android 开发中进行一些尝试,这意味着我只需要安装 Make、Gcc 和 Gdb。通过 Cygwin 这样做,重新启动 Eclipsed,一切似乎都工作正常(当尝试编译一个空项目时,所有调用都没有错误并且项目编译)。

将基本的“helloworld”项目源导入新创建的 Eclipse C 项目,并在尝试包含“m_pd.h”时出现(如预期的那样)错误。在 google 和 eclipse 文档中搜索库包含,在包含路径、库路径(链接器-> 库设置)中进行了尝试,除了将其添加到包含路径之外,它无法与任何其他解决方案一起正常工作。将 Pure Data src 文件夹添加到项目的包含路径中,并且错误消失了。

但是,当我尝试编译项目时,所有 PD 方法和函数都会出现未定义的引用错误(post、pd_new、gensym 等),这表明编译器无法正确访问库...

作为一个完全的 Eclipse 新手用户,我想知道我是否错过了一些步骤或者我做错了什么......

内部和外部编译器似乎都会发生相同的错误。外部(cygwin gcc)在链接阶段显示错误(在“Invoking: Cygwin C Linker”行之后)

更新:在我将包含路径添加到 cygwin 链接器库路径后,编译错误消失了。现在在makefile命令上出现“意外令牌'('附近的语法错误”错误:gcc -shared -o“dataIn.dll”./src/dataIn.o -lC:/Program\ Files\ (x86)/Pure\ Data/源代码

是否因为路径中的“(”而变得奇怪?

4

2 回答 2

1

gcc 和 GNU make 在处理包含路径中的空格方面享有盛誉。

简短的回答是:不要!

将 Pd 解压缩到一个不包含空格、括号、星号和可怕的AUX. 例如

C:\Pd\
于 2015-04-21T19:25:21.357 回答
0

作为记录,如果有人偶然发现这个问题,问题出在使用 Cygwin,因为它需要一个 dll (cygwin1.dll) 来运行用它编译的任何东西。最终切换到使用 MingW,一切正常。

Umlaute 关于文件路径和目录的建议对于确保正确编译也非常重要。

于 2015-08-24T09:17:46.840 回答