从C ++代码返回符号时遇到了一些麻烦。我做了一个小例子来说明问题。
我们导出以下功能:
extern "C" __declspec(dllexport) K getSym(K x) {
return ks((S)"sym");
}
然后从Q中调用它:
q)asdf:(`our_dll 2:(`getSym;1))[1]
q)asdf
`sym
q)asdf = `sym
0b
q)asdf = `$string asdf
0b
q)0N!asdf
`sym
`sym
q)(string asdf) = (string `sym)
111b
为什么这两个值不相等?
这是32位KDB + 3.2。
答案 0 :(得分:0)
如果使用2.4之前的q版本,则需要使用ss()
函数实习C字符串,然后再将其传递给ks()
。您不应该在最近的版本中看到此问题。