Sooooo我正在編寫腳本解釋器。基本上,我想存儲在一個DLL一些類和函數,但我想的DLL來尋找那些被鏈接到它,就像節目中的函數,使用gcc編譯DLL
program dll
----------------------------------------------------
send code to dll-----> parse code
|
v
code contains a function,
that isn't contained in the DLL
|
list of functions in <------/
program
|
v
corresponding function,
user-defined in the
program--process the
passed argument here
|
\--------------> return value sent back
to the parsing function
基本上,我是想知道,我怎麼編譯一個使用gcc的DLL?那麼,我正在使用gcc的windows端口。一旦我編譯了一個包含我的類和函數的.dll,我該如何鏈接到我的程序?我如何使用DLL中的類和函數? DLL可以調用鏈接到它的程序的函數嗎?如果我創建一個類{...}對象;在DLL中,然後當程序加載DLL時,程序是否可以使用對象?在此之前感謝,我真的需要知道如何在C++中使用DLL,然後才能繼續此項目。
「你可以添加更多的細節,你爲什麼要DLL調用主程序中的函數嗎?」
我以爲這個圖解釋了它......使用DLL的程序將一段代碼傳遞給解析代碼的DLL,並且如果在所述代碼中找到函數調用,那麼DLL中的相應函數是調用...例如,如果我傳遞「a = sqrt(100)」,那麼DLL解析器函數將查找對sqrt()的函數調用,並且在該DLL內將會有一個相應的sqrt()函數,傳遞給它的參數的根,然後它將從該函數獲取返回值並將其放入變量a中,就像其他程序一樣,但是如果沒有在sqrt()函數中找到相應的處理函數該DLL(將有一個本地支持的函數列表),那麼它會調用一個類似的函數,它將駐留在使用該DLL的程序中,以查看是否有該名稱的用戶定義函數。
因此,假設您將DLL加載到程序中,讓您的程序能夠解釋此特定語言的腳本,程序可以調用DLL來處理單行代碼或將腳本的文件名處理爲...但是如果你想添加一個命令到適合程序目的的腳本中,你可以說在DLL中設置一個布爾值,告訴它你正在爲它的語言添加函數,然後在你的代碼中創建一個函數,你要添加的函數(DLL會用它想要的函數的名字來調用它,如果這個函數是你的代碼中包含的用戶定義的函數的話,函數會調用相應的函數,並使用由DLL傳遞給它的參數,將用戶定義函數的返回值返回給DLL,如果它不存在,它將返回錯誤代碼或NULL或s omething)。我開始看到,我必須找到解決這個另一種方式讓函數調用走一條路只有
哇,我甚至不知道有一個海灣合作委員會的勝利端口。我會嘗試使用gcc與windows作爲平臺目標。 – cbrulak 2009-02-03 00:22:03
你應該指定你正在使用的確切編譯器。該編譯器的文檔可能會告訴你如何製作DLL。 – SoapBox 2009-02-03 00:23:01
它被稱爲mingw或mingw32我猜...我會嘗試找到gcc文檔,但我對C和C++相當陌生,所以它的某些方面仍然很難理解 – user61721 2009-02-03 00:35:36