小编Joh*_*ien的帖子

OpenAL源在停止并删除后继续播放

我们的ipad应用程序并行播放一堆OpenAL源,每个持续触摸一个.源是在touchesMoved上创建和启动的,并在touchesEnded或touchesCancelled上停止.

事情似乎工作正常,除了一个错误,有时一个来源似乎在触摸结束后继续播放.这似乎只在生成大量触摸事件时才会发生.

我已经验证,当发生这种情况时,我的所有AL源都已使用alSourceStop停止并且已被alDeleteSources销毁.OpenAL没有报告任何错误.但声音并没有停止.

我开始认为这可能是OpenAL的iOS实现中的一个错误.有没有人见过这样的东西?

openal ios

6
推荐指数
1
解决办法
976
查看次数

在Mac OS X应用程序包中打包C二进制文件

我正在尝试将我的二进制文件打包到一个简约的应用程序包中.但是我看到结果有些奇怪的行为.

我的包有这个最小的结构:

$ ls -R HelloWorld.app
Contents

HelloWorld.app/Contents:
Info.plist MacOS      PkgInfo

HelloWorld.app/Contents/MacOS:
helloworld
Run Code Online (Sandbox Code Playgroud)

helloworld是一个C二进制文件,编译自:

#include <stdio.h>
#include <unistd.h>

int main(int argc, char **argv) {
    while (1) {
        printf("Hello world!\n");
        sleep(2);
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Info.plist包含:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleExecutable</key>
    <string>helloworld</string>
    <key>CFBundleIdentifier</key>
    <string>com.litl.helloworld</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>HelloWorld</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0.0</string>
    <key>CFBundleVersion</key>
    <string>20</string>
    <key>LSMinimumSystemVersion</key>
    <string>10.6</string>
    <key>LSUIElement</key>
    <true/>
    <key>LSBackgroundOnly</key>
    <true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

现在为了奇怪的行为.我跑的时候

open ./HelloWorld.app
Run Code Online (Sandbox Code Playgroud)

该命令挂起约30秒.之后,我可以确认helloworld二进制文件正在运行.但是它的标准输出不会出现在Console.app中.如果我以编程方式启动此捆绑包(NSWorkspace sharedWorkspace)launchApplicationAtURL ...)调用成功,但二进制文件立即退出(我可以在控制台中看到它退出时出现错误代码2).

这是在OS X 10.9.2上.

我究竟做错了什么?

macos bundle launchd app-bundle

6
推荐指数
1
解决办法
1079
查看次数

是否可以向C库中的所有符号添加C++命名空间?

我正在修改一个大型C++项目,它在其主要标题之一中定义了一个枚举FooBar.这个枚举随处可见,遗憾的是没有命名空间.

从那个项目开始,我想使用一个C库,遗憾的是,它还在同一个全局命名空间中定义了一个枚举FooBar.

我无法更改库实现,并且很难在C++项目中重命名或命名空间,因为它遍布整个地方.

理想情况下,我会为来自C库的所有符号添加命名空间.我尝试过类似的东西:

namespace c_library_foo {
#include <c_library_foo.h>
}

...
c_library_foo::c_library_function()
...
Run Code Online (Sandbox Code Playgroud)

就编译而言,它工作正常,但当然链接器无法解析库中的符号,因为命名空间不在实现中.

c c++ namespaces

5
推荐指数
2
解决办法
1146
查看次数

标签 统计

app-bundle ×1

bundle ×1

c ×1

c++ ×1

ios ×1

launchd ×1

macos ×1

namespaces ×1

openal ×1