【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表示,這個函式被匯出的順序
你可以用以上兩種方式的任意一種匯出函式
相關文章
- C#呼叫C++動態連結庫C#C++
- 動態連結庫與靜態連結庫
- P/Invoke之C#呼叫動態連結庫DLLC#
- cmake 連結動態連結庫
- lua——alien庫實現lua呼叫C動態連結庫(dll、so)
- JNI呼叫c動態連結庫函式程式碼實踐函式
- linux下靜態連結庫和動態連結庫的區別有哪些Linux
- 編譯 pyav 成 wheel 並使用 auditwheel 固化動態連結庫編譯
- 動態連結庫的生成和使用(二)
- 動態連結庫(DLL)的建立和使用
- 動態庫的建立和呼叫
- windows和linux gcc生成動態連結庫DLL和SO並用python呼叫WindowsLinuxGCPython
- 【連結 1】與靜態連結庫連結
- vc 編譯連線選項編譯
- C編譯: 動態連線庫 (.so檔案)編譯
- Android NDK祕籍--編譯靜態庫、呼叫靜態庫Android編譯
- 載入動態連結庫——dlopen dlsym dlclose
- QT6編寫外部庫並呼叫QT
- PB帶引數帶結果集的動態SQL查詢SQL
- MFC之動態呼叫自己寫的類庫中的類的成員方法
- VS中呼叫DLL動態庫的方法
- 靜態連結動態連結的連結順序問題和makefile示例
- 在AndroidStudio下使用cmake編譯出靜態連結庫的方法Android編譯
- java動態呼叫c++庫JavaC++
- java呼叫c++動態庫之jni呼叫JavaC++
- IIS無法訪問動態連結庫DLL的原因
- 如何連結兩個名字一樣動態庫
- 動態連結的相關結構
- C++呼叫C#的動態庫dllC++C#
- (超詳細)動手編寫-連結串列(Java實現)Java
- 編譯lua動態庫編譯
- 在 Linux中如何使用動態連結模組庫?Linux
- 動態連結的PLT與GOTGo
- django中怎麼設定連結,並自動重新整理,呼叫寫的方法Django
- 解決Qt編譯動態連結庫could not find or load the Qt platform plugin "windows" in.問題QT編譯PlatformPluginWindows
- FFmpeg開發筆記(四)FFmpeg的動態連結庫介紹筆記
- Gazebo新增模型並控制模型運動作為動態障礙物(Ubuntu16.04, Gazebo7.16),附錄動態連結庫和靜態連結庫區別模型Ubuntu
- 使用js動態新增連結隨機連結JS隨機
- 構造器中呼叫動態繫結的方法