我有一個C靜態庫,並在其中我有一個名爲returnBytes一個()的函數,這個函數的定義是這樣的:從靜態庫返回從AC函數的字符串(字符*)(.LIB)
extern "C" unsigned char * returnBytes(void)
{
static unsigned char result[50] = { 0xF0, 0xF0, 0xF0 };
return result;
}
我的其他項目
其使用上述靜態庫(.LIB)我調用該函數是這樣的:
unsigned char *output = returnBytes();
,但是當我打印輸出,其不正確的內容。這意味着調用像這樣的自定義打印功能不返回正確的值:從庫中()
print_bytes(output, 50);
在另一方面呼籲returnBytes工作正常。意思是打印值0xF0,0xF0,0xF0。
是否靜態關鍵字只有保持相同項目中的變量值?如果在從一個項目中調用的靜態庫函數中使用靜態關鍵字,那麼它是否會起作用?
我應該使用malloc來代替並將指針傳遞給returnBytes()?這是唯一的方法嗎?
我正在運行Windows 7,並使用VC12編譯庫和庫的客戶端。
@AustinBrunkhorst,這是不正確的。他有一個'static'變量。 –
哎呀,我忽略了這一點。 –
*「不起作用」*非常模糊。你想告訴我們* actual *結果是什麼,它和* expected *結果有什麼不同?以及你如何證明這一點? (你使用'printf'?或更復雜的東西?) – abelenky