0

从 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。

4

1 回答 1

0

如果您使用 2.4 之前的 q 版本,则需要在将 C 字符串ss()传递给ks(). 您不应该在最近的版本中看到这个问题。

于 2015-10-03T00:17:23.140 回答