製成lib後, 無法讀到nasm的function... |
尚未結案
|
cdklokBCB
一般會員 發表:15 回覆:27 積分:8 註冊:2003-02-19 發送簡訊給我 |
|
cdklokBCB
一般會員 發表:15 回覆:27 積分:8 註冊:2003-02-19 發送簡訊給我 |
例如:
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 發送簡訊給我 |
引言: 例如: 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 發送簡訊給我 |
|
cdklokBCB
一般會員 發表:15 回覆:27 積分:8 註冊:2003-02-19 發送簡訊給我 |
引言: 在你的 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 發送簡訊給我 |
|
cdklokBCB
一般會員 發表:15 回覆:27 積分:8 註冊:2003-02-19 發送簡訊給我 |
引言: 你知道在 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 發送簡訊給我 |
|
cdklokBCB
一般會員 發表:15 回覆:27 積分:8 註冊:2003-02-19 發送簡訊給我 |
引言: ok. 那麻煩你做一個實驗。沒錯的...我之前就是用.cpp call .c, .c call .asm... 但改成.cpp call .lib (.c & .asm) 時, .lib 裡面的.c就call不到.asm... 而我的程式寫法跟上面 post 一樣囉.. 感謝你的回應...3Q~引言: 但如果是=> .cpp call .lib(maked by .c & .asm) 就會有.cpp call 不到.asm function 的問題你改成 .cpp 去 call .c, .c call .asm 而你的 .lib 也是 用 .c & .asm 做出來的。 這樣它會動作嗎? PS。我不要你直接CALL ASM的函數 |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
cdklokBCB
一般會員 發表:15 回覆:27 積分:8 註冊:2003-02-19 發送簡訊給我 |
|
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
cdklokBCB
一般會員 發表:15 回覆:27 積分:8 註冊:2003-02-19 發送簡訊給我 |
引言: 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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |