C++符号与Q符号的失配 当从C++代码返回符号时,我遇到了一些麻烦。我举了一个小例子来说明这个问题

C++符号与Q符号的失配 当从C++代码返回符号时,我遇到了一些麻烦。我举了一个小例子来说明这个问题,c++,kdb,q-lang,C++,Kdb,Q Lang,我们导出以下函数: 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 为什么这两

我们导出以下函数:

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。

如果使用2.4之前版本的q,则需要在将其传递给ks之前使用ss函数对C字符串进行内部处理。您不应该在最新版本中看到此问题。

0N的输出是什么!asdf;有时控制台可能会掩盖变量的实际基本形状/类型。0N!将显示真实值我尝试了这段代码,它工作正常。我添加了0N的输出!请回答这个问题@KhouriGiordano,您使用的是哪个版本的KDB?它是Win32,正在启动,Q说KDB+3.2 2015.04.07。我得到了链接自的k.h和q.lib文件。直到这个问题,我才听说过Q,尽管我已经制作了很多动态加载的DLL。