2015-04-07 44 views
0

從C++代碼返回符號時遇到了一些麻煩。我舉了一個小例子來說明問題。C++符號和Q符號之間不匹配

我們導出以下功能:

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

0N!asdf的輸出是什麼? – terrylynch

+0

有時控制檯可能會遮掩變量的實際潛在形狀/類型。 0N!將顯示真實值 – terrylynch

+0

我試過這個代碼,它的工作原理。 –

回答

0

如果您在2.4之前使用q的版本,則需要在使用ss()函數之前實習C字符串,然後將其傳遞到ks()。最近的版本你不應該看到這個問題。