2013-05-08 19 views
3

我已經寫在C++的功能,使得DLL:爲什麼Pascal腳本會在我的外部函數聲明附近預期另一個分號?

functions.h:

#ifndef FUNCTIONS_H 
#define FUNCTIONS_H 


int DLLsquare(int x); 
#endif /* FUNCTIONS_H */ 

functions.cpp:

#include "functions.h" 
int DLLsquare(int x){ 
    return x*x; 
} 

我編這一個DLL。現在我想將其導入到Pascal腳本中:

program TestDLL; 

function Square(x: Integer): Integer; 
external '[email protected]'; 

begin 
end. 

現在,這不能編譯。我得到:

(7:1):分號;預計將在6號線
編譯失敗( '')。

互聯網上的幾個教程告訴我,這正是要走的路,所以我在這裏錯過了什麼?

+0

你是否在其他地方缺少分號然後你檢查了它 – NetStarter 2013-05-08 14:22:26

+0

你正在使用哪種Pascal編譯器? – 2013-05-08 14:38:17

+1

是的,我嘗試在各種地方添加和刪除分號,但根據我的經驗,這種方式的語法是正確的。除非我在這裏錯過了一些東西,我清楚地知道:) – RickB 2013-05-08 14:43:56

回答

2

如果您聲明瞭外部函數並沒有將處理程序分配給OnExternalProc事件,則Pascal腳本將拋出「分號預期」錯誤。

您可以自己實施,也可以使用uPSC_dll單位的DllExternalProc。考慮在您的編譯器組件上調用RegisterDll_Compiletime,該組件會分配OnExternalProc事件併爲腳本註冊兩個函數,即UnloadDllDLLGetLastError

儘管在主機程序沒有提供處理外部函數的方法時引發錯誤是可以理解的,但錯誤消息的具體措詞是無稽之談。我鼓勵你通過項目file an issue來改善它。

相關問題