2012-04-24 26 views
17

JHC是一個Haskell編譯器,它可移植生成C代碼,然後調用編譯器後端來創建可執行文件。我如何才能讓JHC與android ndk合作?

我需要轉儲JHC運行時系統的頭文件和庫,所以android ndk可以使用它來編譯生成的C代碼。

或者,我需要弄清楚如何將android API鏈接到JHC。

基本上,我該如何將JHC插入到android ndk後端?

編輯:我做了一個獨立的編譯器,使用JHC可以使用的一個ndk構建工具「build/tools/make-standalone-toolchain.sh」。現在我需要找出一種方法讓JHC將我的程序編譯成一個共享對象庫,以及如何讓JHC不要求「主」功能。

Edit2:我有以下targets.ini和編譯腳本。奇怪的是共享庫無法加載。

[android] 
cc=arm-linux-androideabi-gcc 
cflags+= -shared -fPIC -rdynamic -Wno-all 
gc=static 
executable_extension=.so 
merge=mle32 

#!/bin/sh 

jhc --cross -mandroid \ 
--main=Main.android_main \ 
hs/Main.hs -o libs/armeabi/libnative-activity && 
ant debug && 
ant debug install 
+0

爲什麼共享庫無法加載?是否有錯誤訊息?另外,你是從Java應用程序加載它,還是試圖從C/C++代碼中調用它(我懷疑後面的代碼,因爲你似乎使用NativeActivity)? – gfour 2012-04-25 09:26:13

+0

我正在使用本機活動膠水代碼。我非常沮喪的部分原因是錯誤信息很不明確。我真的好奇,是否有辦法獲得更好的。似乎只有兩個不同的,一個表明庫無法找到,(我固定),一個指示庫將無法正確加載。 – 2012-04-25 21:31:36

回答

2

我想通了這個問題。 我沒有把函數調用「app_dummy()」放在我的「android_main」函數的開頭。

+0

注意:隨着新的NDKr15 app_dummy()消失,它會拋出一個錯誤 – FrickeFresh 2017-07-01 22:54:11

相關問題