close

這是今天在改transform時遇到的問題

研究網路上關於  multiple definition of XXX first defined here 的錯誤

 

發現可能是因為兩個.o檔各自都定義了function

所以導致系統不知到要用哪一個,所以才會遇到這個問題

雖然我很困惑,在這邊我是將function寫在.h檔裡面

而照理說像是include 他的Decode_P或是Decode_I應該都只是include才對

應該是不會同時造兩個function才對

不過後來解決方式我還是將我改的function改到.h檔下面的.c檔裡面才問題就解決了

困惑的問題  (紀錄一下)


SharedLibrary  : libopensvcui.so

/home/Administrator/android-ndk-r4-crystax/samples/OpenSVC/opensvcui/obj/local/armeabi-v7a/libbaseline.a(decode_MB_P.o): In function `ict_4x4_residual_neon':

/home/Administrator/android-ndk-r4-crystax/samples/OpenSVC/baseline/jni/src/Tran

sform.h:195: multiple definition of `ict_4x4_residual_neon'

/home/Administrator/android-ndk-r4-crystax/samples/OpenSVC/opensvcui/obj/local/armeabi-v7a/libbaseline.a(decode_MB_I.o):/home/Administrator/android-ndk-r4-crystax/samples/OpenSVC/baseline/jni/src/Transform.h:195: first defined here

/home/Administrator/android-ndk-r4-crystax/samples/OpenSVC/opensvcui/obj/local/armeabi-v7a/libbaseline.a(Transform.o): In function `ict_4x4_residual_neon':

/home/Administrator/android-ndk-r4-crystax/samples/OpenSVC/baseline/jni/src/Tran

sform.h:195: multiple definition of `ict_4x4_residual_neon'

/home/Administrator/android-ndk-r4-crystax/samples/OpenSVC/opensvcui/obj/local/armeabi-v7a/libbaseline.a(decode_MB_I.o):/home/Administrator/android-ndk-r4-crystax/samples/OpenSVC/baseline/jni/src/Transform.h:195: first defined here

collect2: ld returned 1 exit status

make: *** [/home/Administrator/android-ndk-r4-crystax/samples/OpenSVC/opensvcui/

obj/local/armeabi-v7a/libopensvcui.so] Error 1

make: Leaving directory `/home/Administrator/android-ndk-r4-crystax/samples/Open

SVC/opensvcui'

-----------------------------------5/1---------------------------------------------

transform卡死在一個很詭異的地方

block讀進來後,與值image相加後再存回image

結果發現image的值有時候進來是錯的0.0

但是一但我把neon的transform function關掉

圖又會是對的

所以很明顯的表示我的function有改到image的值

但是照理說我只是把block加到image上

所以我在debug時猜測說,其實我處理完的image值有時候會被重複使用

所以才會有讀入就錯的情形

那麼~~~~照這樣推下來就是我block運算後的值是錯的囉 ?

我很努力的算了一下每個步驟的值

發現都對阿

結果呢

花了一番工夫把c的值和neon的值print出來比對

發現我neon的值沒錯,竟然是c的錯

而且是在一個shift right 6 的地方

ex. (-672 >>6)

照理說應該是-10,結果c算出來是-11

真他媽的詭異

先不管反向(負值)

672 = 1010100000

而shift right 6後,值是 1010(也就是10)

所以根本沒有round的問題

所以結果我決定以我neon的圖為正解


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 angledark0123 的頭像
    angledark0123

    CONY的世界

    angledark0123 發表在 痞客邦 留言(2) 人氣()