【发布时间】:2015-04-07 18:29:51
【问题描述】:
从 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。
【问题讨论】:
-
0N!asdf的输出是什么;
-
有时控制台会掩盖变量的实际底层形状/类型。 0N!将显示真实值
-
我试过这段代码,它可以工作。
-
我将
0N!asdf的输出添加到问题中。 @KhouriGiordano,您使用的是哪个版本的 KDB? -
它是 Win32 并且在启动时,Q 说“KDB+ 3.2 2015.04.07”。我得到了从the wiki 链接的
k.h和q.lib文件。直到这个问题我才听说过 Q,尽管我已经制作了很多动态加载的 DLL。