PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   請教一個C的問題 (https://www.pcdvd.com.tw/showthread.php?t=925007)

ttsmarco 2011-03-29 09:04 PM

引用:
作者a_ei
沒看到 呼叫的程式 的源碼?
只是初步看起來,不像 .dll 本身的問題.
因為已經可以叫到裡面了,而裡面看起來沒有什麼邏輯錯誤.

小弟也是覺得很奇怪
小弟用autoit(test.exe檔)呼叫別人寫的dll並不會有這種問題
附上檔案 不過它寫出來是強制在C:\底下(檔名也不能改)
用其他程式呼叫也正常

唯獨上面自己寫的dll
不管用autoit呼叫,還是別的程式
都會出現記憶體不能為read... :cry:
頭痛中... :jolin:

ttsmarco 2011-03-29 10:14 PM

測試了一下,似乎只要帶參數,就會出錯
沒有的話,卻都正常..
代碼:
dllmain.c
DLLIMPORT void HelloWorld ()
dll.h
DLLIMPORT void HelloWorld (void);

正常

代碼:
dllmain.c
DLLIMPORT void HelloWorld (int aa)
dll.h
DLLIMPORT void HelloWorld (int);

錯誤

努力爬文中... :cry:

goodromhome 2011-03-29 11:35 PM

引用:
作者ttsmarco
測試了一下,似乎只要帶參數,就會出錯
沒有的話,卻都正常..

dllmain.c
DLLIMPORT void HelloWorld ()
dll.h
DLLIMPORT void HelloWorld (void);

正常


dllmain.c
DLLIMPORT void HelloWorld (int aa)
dll.h
DLLIMPORT void HelloWorld (int);

錯誤

努力爬文中... :cry:

int不能當參數吧..........

ttsmarco 2011-03-29 11:36 PM

找到原因了
是因為cdecl與stdcall,我沒注意到這個問題

感謝各位
尤其是iorlvskyo與a_ei,感動到快哭了 :like:

whlee75 2011-03-29 11:45 PM

雖然知道應該不是我想的那種C
但還是不爭氣的點了進來... :nonono: :nonono:

iorlvskyo 2011-03-29 11:53 PM

引用:
作者goodromhome
int不能當參數吧..........


您的意思是這行嗎?
dll.h
DLLIMPORT void HelloWorld (int);

宣告可以只放參數型別,不用加參數名稱沒關係。

烤全羊 2011-03-29 11:54 PM

對不起,我想歪了。我去罰站

a_ei 2011-03-30 09:12 AM

引用:
作者ttsmarco
找到原因了
是因為cdecl與stdcall,我沒注意到這個問題

感謝各位
尤其是iorlvskyo與a_ei,感動到快哭了 :like:


不,是你自己找到原因的.

還有 iorlvskyo才是高手.

我是拿你的code 拿來測試而以.

我也不會啊.

反而是這個討論串,讓我學習了一點東西.


所有的時間均為GMT +8。 現在的時間是04:20 PM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。