我想从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输出像안,蠀,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上运行吗?