線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2363
推到 Plurk!
推到 Facebook!

製成lib後, 無法讀到nasm的function...

尚未結案
cdklokBCB
一般會員


發表:15
回覆:27
積分:8
註冊:2003-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-13 20:02:38 IP:211.75.xxx.xxx 未訂閱
想請教各位大大您一個問題啊~~~ 我試了好久 *_* 我有一個 C code 可以讀到 nasm 檔的 function... 可是將 C code 作成 lib 以後...就讀不到了... 要如何讀到ㄋ?!?! 請請幫忙~~ 3Q~~~
cdklokBCB
一般會員


發表:15
回覆:27
積分:8
註冊:2003-02-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-14 14:43:40 IP:211.75.xxx.xxx 未訂閱
例如: idct_mmx.asm =>    %macro cglobal 1         global _%1:function %1.endfunc-%1         %define %1 _%1:function %1.endfunc-%1          ... cglobal idct_mmx ;-------------------------------------------------------------------- ; void idct_mmx(uint16_t block[64]); ;-------------------------------------------------------------------- ALIGN 16 idct_mmx:     ...     .endfunc ------------------------------------------------------------------ global_c.c => void idct_mmx(unsigned short block[64]); void idct_mmx_(short block[64]){         idct_mmx(block); } ------------------------------------------------------------------ test.cpp => extern "C" {void idct_mmx_(short *const block);} void main(){   int i=0;   short PixelData1[64];           for(i=0; i<64; i ) PixelData1[i] = 1; idct_mmx_(PixelData1); } 請問各位大大, 上面我測試是沒問題的...但我如何讓 test.cpp 不靠 "global_c.c" 而能去讀取 idct_mmx(block); 呢?!? 會有 unresolved external symbol _idct_mmx@4 請各位大大幫幫忙啊~~~
cdklokBCB
一般會員


發表:15
回覆:27
積分:8
註冊:2003-02-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-14 19:40:23 IP:211.75.xxx.xxx 未訂閱
引言: 例如: idct_mmx.asm => %macro cglobal 1 global _%1:function %1.endfunc-%1 Þfine %1 _%1:function %1.endfunc-%1 ... cglobal idct_mmx ;-------------------------------------------------------------------- ; void idct_mmx(uint16_t block[64]); ;-------------------------------------------------------------------- ALIGN 16 idct_mmx: ... .endfunc ------------------------------------------------------------------ global_c.c => void idct_mmx(unsigned short block[64]); void idct_mmx_(short block[64]){ idct_mmx(block); } ------------------------------------------------------------------ test.cpp => extern "C" {void idct_mmx_(short *const block);} void main(){ int i=0; short PixelData1[64]; for(i=0; i<64; i ) PixelData1[i] = 1; idct_mmx_(PixelData1); } 請問各位大大, 上面我測試是沒問題的...但我如何讓 test.cpp 不靠 "global_c.c" 而能去讀取 idct_mmx(block); 呢?!? 會有 unresolved external symbol _idct_mmx@4 請各位大大幫幫忙啊~~~
目前雖然解決了...=>test.cpp可以直接call到.asm的function... 但global_c.c製成lib後, test.cpp call 則還是有error unresolved external symbol _idct_mmx@4 請問該如何解決呢?!?!?!
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-15 10:25:03 IP:203.69.xxx.xxx 未訂閱
在你的 CPP 檔中要這樣宣告就可以了。    
extern "C" {
void idct_mmx(uint16_t block[64]);
}
-------------------------------------------------------------- http://www.mcu51.com/list.asp?id=1588 想想別人怎麼學,我們有這麼用心嗎? 憂心啊~~~~~~
cdklokBCB
一般會員


發表:15
回覆:27
積分:8
註冊:2003-02-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-16 21:09:26 IP:211.75.xxx.xxx 未訂閱
引言: 在你的 CPP 檔中要這樣宣告就可以了。
extern "C" {
void idct_mmx(uint16_t block[64]);
}
感謝您的回應, 我之前就有如此試了... 可是如果製成 .lib 後, 就call不到 nasm funciton 了.. 我的猜測是可能得在nasm檔裡面改吧~~ 請問有人知道如何改ㄇ?!?! 3Q~~ -------------------------------------------------------------- http://www.mcu51.com/list.asp?id=1588 想想別人怎麼學,我們有這麼用心嗎? 憂心啊~~~~~~
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-17 10:28:25 IP:221.169.xxx.xxx 未訂閱
你知道在 lib 中,你要怎麼 link 它嗎???? 是不是你沒LINK LIB的關係? 不然你那樣宣告就可以了。 這扯到編碼問題。 如果你有把LIB LINK進來。 那你把你的 LIB 的 LST 列出來給我看看吧。 不會列出LST的話。請參考你所使用的LIB工具。thk. http://www.mcu51.com/list.asp?id=1588 想想別人怎麼學,我們有這麼用心嗎? 憂心啊~~~~~~
cdklokBCB
一般會員


發表:15
回覆:27
積分:8
註冊:2003-02-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-20 15:07:09 IP:211.75.xxx.xxx 未訂閱
引言: 你知道在 lib 中,你要怎麼 link 它嗎???? 是不是你沒LINK LIB的關係? 不然你那樣宣告就可以了。 這扯到編碼問題。 如果你有把LIB LINK進來。 那你把你的 LIB 的 LST 列出來給我看看吧。 不會列出LST的話。請參考你所使用的LIB工具。thk. http://www.mcu51.com/list.asp?id=1588 想想別人怎麼學,我們有這麼用心嗎? 憂心啊~~~~~~
這是我在VC下的nasm custom build nasm -f win32 -DPREFIX -o $(IntDir)\$(InputName).obj $(InputPath) 問題是...假如我的專案是 .cpp .c .asm 是沒問題的(.c call .asm 然後 .cpp call .c 就可 call 到.asm 的function)... 但如果是=> .cpp call .lib(maked by .c & .asm) 就會有.cpp call 不到.asm function 的問題~~~ 3Q~~
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-20 16:31:19 IP:221.169.xxx.xxx 未訂閱
ok. 那麻煩你做一個實驗。
引言: 但如果是=> .cpp call .lib(maked by .c & .asm) 就會有.cpp call 不到.asm function 的問題
你改成 .cpp 去 call .c, .c call .asm 而你的 .lib 也是 用 .c & .asm 做出來的。 這樣它會動作嗎? PS。我不要你直接CALL ASM的函數
cdklokBCB
一般會員


發表:15
回覆:27
積分:8
註冊:2003-02-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-12-21 09:12:21 IP:211.75.xxx.xxx 未訂閱
引言: ok. 那麻煩你做一個實驗。
引言: 但如果是=> .cpp call .lib(maked by .c & .asm) 就會有.cpp call 不到.asm function 的問題
你改成 .cpp 去 call .c, .c call .asm 而你的 .lib 也是 用 .c & .asm 做出來的。 這樣它會動作嗎? PS。我不要你直接CALL ASM的函數
沒錯的...我之前就是用.cpp call .c, .c call .asm... 但改成.cpp call .lib (.c & .asm) 時, .lib 裡面的.c就call不到.asm... 而我的程式寫法跟上面 post 一樣囉.. 感謝你的回應...3Q~
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-12-21 20:09:05 IP:61.30.xxx.xxx 未訂閱
那它能CALL到C嗎?
cdklokBCB
一般會員


發表:15
回覆:27
積分:8
註冊:2003-02-19

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-12-22 17:06:40 IP:211.75.xxx.xxx 未訂閱
引言: 那它能CALL到C嗎?
可以啊~~
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-12-23 10:53:14 IP:221.169.xxx.xxx 未訂閱
so your question is C can't call asm. post your .lib's .lst to here. ok? http://www.mcu51.com/list.asp?id=1588 想想別人怎麼學,我們有這麼用心嗎? 憂心啊~~~~~~
cdklokBCB
一般會員


發表:15
回覆:27
積分:8
註冊:2003-02-19

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-12-28 19:47:11 IP:211.75.xxx.xxx 未訂閱
引言: so your question is C can't call asm. post your .lib's .lst to here. ok? http://www.mcu51.com/list.asp?id=1588 想想別人怎麼學,我們有這麼用心嗎? 憂心啊~~~~~~
我將程式上傳了 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=61912 但目前沒製成lib...因為lib檔案包太多東西... 程式為 .cpp .c .asm (.c call.asm ; .cpp call .c to call .asm 的function)... 謝謝您的回應~
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-12-29 12:01:47 IP:210.241.xxx.xxx 未訂閱
我只要你的 lst 檔,我只會跟你討論怎麼把問題處理掉。 真正去解決問題的人還是要你。 我不會幫你把問題做掉。 so. 給我 lst 檔吧。
系統時間:2024-04-29 6:58:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!