【PB】powerbuilder呼叫VC編寫的動態連結庫
問題:在pb呼叫vc編寫的動態連結庫的時候,報"specified argument type differs from required argument type at runtime in DLL function myFunctionVC4(invalid stack pointer on return from function call) at line 3 in clicked event of object cb_1 of w_main"
(1) DLL中myFunctionVC4函式宣告如下:
extern "C" __declspec(dllexport) long MyFunctionVC4(long xx){
//AFX_MANAGE_STATE(AfxGetStaticModuleState());
return xx;
}
(2)呼叫過程 long ll = MyFunction(10);
為什麼我呼叫的時候,說提示無法訪問被呼叫函式的堆疊哪?經過查閱資料,發現問題解答如下:
(1)VC中函式需要前加 __stdcall 引數宣告
(2)要在.def檔案中定義函式的匯出順序
; MyVCDLL.def : Declares the module parameters for the DLL.
LIBRARY "MyVCDLL"
DESCRIPTION 'MyVCDLL Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
;MyVC3 = _MyVC3@4
;這裡的@4是指的MyVC3引數的總Byte數,注意你可以改名,例如MyVC4 = _MyVC3@4真正在外部呼叫時為MyVC4(int)名
MyFunctionVC4 @1 ;這裡的@1表示,這個函式被匯出的順序
你可以用以上兩種方式的任意一種匯出函式
相關文章
- 在PowerBuilder中動態呼叫函式UI函式
- Windows下的VC++動態連結庫程式設計WindowsC++程式設計
- VC動態呼叫DLL
- C#呼叫C++動態連結庫C#C++
- golang可以呼叫C++的動態連結庫麼GolangC++
- Java呼叫C/C++編寫的第三方dll動態連結庫(非nativeAPI)—JNIJavaC++API
- 動態連結庫與靜態連結庫
- VB呼叫C程式的方法—動態連結庫法 (轉)C程式
- Java呼叫C/C++編寫的第三方dll動態連結庫(非native API)--- JNIJavaC++API
- 動態連結庫和靜態連結庫的區別
- C語言編寫靜態連結庫及其使用C語言
- P/Invoke之C#呼叫動態連結庫DLLC#
- cmake 連結動態連結庫
- lua——alien庫實現lua呼叫C動態連結庫(dll、so)
- 動態連結庫(DLL)
- 動態連結庫(轉)
- Win32動態連結庫與靜態連結庫的區別Win32
- JNI呼叫c動態連結庫函式程式碼實踐函式
- linux下靜態連結庫和動態連結庫的區別有哪些Linux
- VC6.0 設定動態連結庫工程生成dll以及lib檔案的位置
- VS2010編寫動態連結庫DLL及單元測試用例,呼叫DLL測試正確性
- 【PB】powerbuilder中xml的應用一例UIXML
- 編譯 pyav 成 wheel 並使用 auditwheel 固化動態連結庫編譯
- ndk-build 編譯多個CPU架構的動態連結庫UI編譯架構
- 動態連結庫(DLL)的建立和使用
- 動態連結庫的生成和使用(二)
- 動態庫的建立和呼叫
- linux下生成動態連結庫Linux
- 例程詳析動態連結庫 (轉)
- 類,介面與動態連結庫 (轉)
- linux下靜態庫、動態庫編譯及makefile書寫Linux編譯
- 深入理解C語言----動態庫 & 靜態庫 & 連結C語言
- oracle呼叫C動態庫Oracle
- 【連結 1】與靜態連結庫連結
- Linux下的靜態連結與動態連結Linux
- C++應用程式在Windows下的編譯、連結(四)動態連結C++Windows編譯
- C編譯: 動態連線庫 (.so檔案)編譯
- 載入動態連結庫——dlopen dlsym dlclose