以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]第一次使用DLL,如何编写API,求老师引路。 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=119666) |
-- 作者:wangjh8888 -- 发布时间:2018/5/29 20:53:00 -- [求助]第一次使用DLL,如何编写API,求老师引路。 老师 您好, 在foxtable第一次碰到使用DLL,已经把 M5DBPCtrl.dll 复制到FT,并添加了外部引用,如何在全局代码中来定义API,请老师指教,谢谢 附:M5DBPCtrlDef.h
DBPlayer控制接口函数头文件, 声明接口函数原型和返回值定义, 供参考 #pragma
once #ifndef M5DBP_EXP #define M5DBP_EXP __declspec(dllimport) #endif // DBPlayer 控制API返回值 enum{
m5dbp_succeeded = 0,
// 执行成功
m5dbp_err_failed = -1,
// 未知原因失败
m5dbp_err_exception_on_send = -2,
// 发送时出现异常
m5dbp_err_not_found_dbplayer = -3,
// 没有找到DBPlayer
m5dbp_err_has_been_initialized = -4,// 已经初始化过
m5dbp_err_create_msg_window = -5,
// 创建消息窗口失败
m5dbp_err_not_initialized = -6
// 没有初始化 }; // 初始化动态库 extern "C" M5DBP_EXP HRESULT M5DBP_Init(HWND hParent); // 启动任务 extern "C" M5DBP_EXP HRESULT M5DBP_StartDBTask(wchar_t * lpszDBTaskName); // 结束任务 extern "C" M5DBP_EXP HRESULT M5DBP_StopDBTask(wchar_t * lpszDBTaskName); // 清理 extern "C" M5DBP_EXP HRESULT M5DBP_Clear(); |
-- 作者:有点蓝 -- 发布时间:2018/5/29 21:08:00 -- 参考这种用法 Public Declare Function M5DBP_Init Lib "M5DBPCtrl.dll" Alias "M5DBP_Init" (hParent As IntPtr ) As Integer
|
-- 作者:wangjh8888 -- 发布时间:2018/5/29 21:31:00 -- 嗯嗯 再问 1. IntPtr 是什么类型(不好意思,刚学) 2. 其他还有三个,应该怎么定义,能不能也帮忙写出来? 谢谢啊
|
-- 作者:有点蓝 -- 发布时间:2018/5/29 21:39:00 -- 1、自己百度 2、Public Declare Function M5DBP_StartDBTask Lib "M5DBPCtrl.dll" Alias "M5DBP_StartDBTask" (lpszDBTaskName As string) As Integer Public Declare Function M5DBP_StopDBTask Lib "M5DBPCtrl.dll" Alias "M5DBP_StopDBTask" (lpszDBTaskName As string) As Integer Public Declare Function M5DBP_Clear Lib "M5DBPCtrl.dll" Alias "M5DBP_Clear" () As Integer
|
-- 作者:wangjh8888 -- 发布时间:2018/5/29 21:58:00 -- 老师: M5DBPCtrl.dll 添加到外部引用后,再进入全局代码编辑确定时就出现未知编辑错误,(全局代码编辑还没有添加定义API代码) 外部引用删除M5DBPCtrl.dll后,就不出现错误,什么问题?
|
-- 作者:有点蓝 -- 发布时间:2018/5/29 22:10:00 -- 不需要外部引用 |
-- 作者:wangjh8888 -- 发布时间:2018/5/30 9:22:00 -- 老师,早 我的测试是这样的: 1.M5DBPCtrl.dll 复制到 C:\\foxtable\\eval 2.全局代码: Public Declare Function M5DBP_Init Lib "M5DBPCtrl.dll" Alias "M5DBP_Init" (hParent As IntPtr ) As Integer Public Declare Function M5DBP_StartDBTask Lib "M5DBPCtrl.dll" Alias "M5DBP_StartDBTask" (lpszDBTaskName As String) As Integer Public Declare Function M5DBP_StopDBTask Lib "M5DBPCtrl.dll" Alias "M5DBP_StopDBTask" (lpszDBTaskName As String) As Integer Public Declare Function M5DBP_Clear Lib "M5DBPCtrl.dll" Alias "M5DBP_Clear" () As Integer 3.测试窗口:Button1,Click 代码: Dim nn As Integer = M5DBP_StartDBTask("ABC") 出现错误报告: .NET Framework 版本:2.0.50727.5420 Foxtable 版本:2018.3.9.1 错误所在事件:窗口,窗口1,Button1,Click 详细错误信息: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B) 请老师帮忙看看 哪里问题, ? |
-- 作者:有点甜 -- 发布时间:2018/5/30 9:44:00 -- 叫对方给你一个C#或者vb.net的实例。不然自己参考帮助文档编写引用。 |
-- 作者:wangjh8888 -- 发布时间:2018/5/30 11:00:00 -- c++ 的可以吗 |
-- 作者:有点甜 -- 发布时间:2018/5/30 11:08:00 -- 以下是引用wangjh8888在2018/5/30 11:00:00的发言:
c++ 的可以吗
不可以。如果用c++,你还得再封装一次,才能给c#、vb.net使用。 |