2014-01-10 80 views
0

如果有人設法將HCRF2移植到Mac OS X,我很感興趣。當使用malloc.h構建cpp文件時,我卡住了。顯然這是一個棄用的軟件包,並沒有太多內容告訴你如何使用它來移植程序。任何幫助將不勝感激,因爲我不是一個C++的人。memalign未在Mac OS X中定義?

[ 2%] Building CXX object hCRF/CMakeFiles/hCRF.dir/src/matrixSSE2.cpp.o 
/Volumes/LocalScratchHD/LocalHome/savkov/Software/HCRF2.0b/libs/shared/hCRF/src/matrixSSE2.cpp:9:10: error: 'malloc.h' file not found with <angled> include; use "quotes" instead 
#include <malloc.h> 
    ^~~~~~~~~~ 
    "malloc.h" 
/Volumes/LocalScratchHD/LocalHome/savkov/Software/HCRF2.0b/libs/shared/hCRF/src/matrixSSE2.cpp:89:20: error: use of undeclared identifier 'memalign' 
      pData = (double*)memalign(16, size*sizeof(double)); 
          ^
2 errors generated. 
make[2]: *** [hCRF/CMakeFiles/hCRF.dir/src/matrixSSE2.cpp.o] Error 1 
make[1]: *** [hCRF/CMakeFiles/hCRF.dir/all] Error 2 
make: *** [all] Error 2 

UPDATE:

我複製到malloc.h所源文件夾和東西去遠一點。現在我得到另一個錯誤:

/.../HCRF2.0b/libs/shared/hCRF/src/matrixSSE2.cpp: In member function 'void Matrix<elType>::create(int, int, elType) [with elType = double]': 
/.../HCRF2.0b/libs/shared/hCRF/src/matrixSSE2.cpp:89:52: error: 'memalign' was not declared in this scope 
+0

這是問題255555. _它是如此美麗!_ – Proxy

+0

請發佈錯誤消息,我們將從那裏開始。 – trojanfoe

+0

你用什麼工具鏈來編譯? '#include '應該在任何地方工作(在合理範圍內)。 – trojanfoe

回答

2

OSX缺乏memalign(),但它確實posix_memalign()。它有一個不同於memalign()的簽名,所以你必須調整一些源代碼。當您有:

pData = (double*)memalign(16, size*sizeof(double)); 

你可以重新寫爲(未經測試):

err = posix_memalign((void **)&pData, 16, size*sizeof(double)); 

但我相信,OSX始終分配16個字節邊界。如果是這樣的話,你可以很容易地使用malloc()

pData = (double *)malloc(size*sizeof(double)); 

(如果你走這條路線,這將是明智的,包括驗證的pData是一個16字節邊界上的說法。)