小编num*_*ric的帖子

从C++生成C包装器?

我想从C++库生成C包装器.有关如何手动完成的教程:

但这太过于体力劳动.

例如,为此:

struct RtAudio {
    virtual DeviceInfo const& f() {...}
    class DeviceInfo {
        virtual void g() { ... }
    };
    ...
};
Run Code Online (Sandbox Code Playgroud)

我需要写:

struct RtAudioC {
    RtAudio x;
};
struct DeviceInfo {
    RtAudio::DeviceInfo x;
};
extern "C" {
    RtAudioC* newRtAudio() { 
        return new RtAudioC;
    }
    void deleteRtAudio(RtAudioC *p {
        delete p;
    }
    /* do something with RtAudio::f() */
    void g(DeviceInfo *p) {
        try {
            p->x.g();
        } catch (SomeError & err) {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

是否有可以自动执行此过程的工具?

c c++ ffi wrapper

19
推荐指数
1
解决办法
6345
查看次数

unicode hello world for C?

我想从C输出像안,蠀,things这样的东西

#include <wchar.h>
int main()
{
    fwprintf(stdout, L"?, ?, ?\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是?,?,?

如何打印这些字符?

编辑:

#include <wchar.h>
#include <locale.h>
int main()
{
    setlocale(LC_CTYPE, "");
    fwprintf(stdout, L"?, ?, ?\n");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这样做了.输出是안,蠀,☃.除了中文字符和雪人在我的urxvt中显示为框,可能是因为我没有启用这些区域设置.

$ locale -a
C
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
ja_JP.utf8
ko_KR
ko_KR.euckr
ko_KR.utf8
korean
korean.euc
POSIX
zh_CN.utf8
Run Code Online (Sandbox Code Playgroud)

我必须另外启用哪个区域设置才能显示中文字符和雪人?也许我需要字体?

以上程序将在Windows上运行吗?

c unicode utf-8

10
推荐指数
3
解决办法
2070
查看次数

标签 统计

c ×2

c++ ×1

ffi ×1

unicode ×1

utf-8 ×1

wrapper ×1