如何将Speex编译为供JNI调用的dll文件?

发布于 2022-09-01 22:17:12 字数 183 浏览 37 评论 0

用NDK编译为.so文件没问题
但用MinGW64编译为.dll却各种报错
比如:

..\jni\libspeex\arch.h:65:2: error: #error You now need to define either FIXED_POINT or FLOATING_POINT

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

茶花眉 2022-09-08 22:17:12

知道了,以CDT+MinGW64为例
在Properties -> C/C++ Build -> Settings -> GCC C Compiler -> Symbols里
Defined Symbols里添加FIXED_POINT、EXPORT=""、USE_KISS_FFT三项
在UnDefined Symbols里添加HAVE_CONFIG_H;

如果你用的是Speex官网下载的文件,需要将include/speex/speex_config_types.h.in的.in去掉,并将内容改为:

#ifndef __SPEEX_TYPES_H__
#define __SPEEX_TYPES_H__

/* these are filled in by configure */
typedef short spx_int16_t;
typedef unsigned short spx_uint16_t;
typedef int spx_int32_t;
typedef unsigned int spx_uint32_t;

#endif

然后可能还会遇到找不到头文件的问题,这个我尝试在项目的Includes里加入include文件夹但没有效果,最后是手动改代码里的路径解决的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文