社区
C++ 语言
帖子详情
DLL中的指针问题
yxder
2009-07-07 01:39:45
JAVaScript不能调用带指针参数的接口方法,有没有什么办法在该别人的DLL 使得里面带多个指针参数的函数返回一个字符串值,而这个字符串刚好是原来的几个指针参数返回的值。
比如说long fun(long a,long b,long* c,long *d,long *e)是别人DLL里面的函数
我定义成 ……fun(long a1,long b1,BSTR *c1) 用c1 返回原来的c,d,e的值
如何实现呢?
...全文
75
19
打赏
收藏
DLL中的指针问题
JAVaScript不能调用带指针参数的接口方法,有没有什么办法在该别人的DLL 使得里面带多个指针参数的函数返回一个字符串值,而这个字符串刚好是原来的几个指针参数返回的值。 比如说long fun(long a,long b,long* c,long *d,long *e)是别人DLL里面的函数 我定义成 ……fun(long a1,long b1,BSTR *c1) 用c1 返回原来的c,d,e的值 如何实现呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yxder
2009-07-08
打赏
举报
回复
可以吗?我试试看怎么改
蒋晟
2009-07-08
打赏
举报
回复
参数全部用variant
yxder
2009-07-08
打赏
举报
回复
那就是只能用BSTR了?
我这里还是实现不了BSTR传多个值啊,不知道是哪里的问题
蒋晟
2009-07-08
打赏
举报
回复
javascript也不能用结构的。
指针也不知道是数组还是单个变量的地址。
findcsdn
2009-07-08
打赏
举报
回复
javascript不能直接访问一般DLL的,如果要访问,可以用COM封装一下。
自己写个COM组件,调用你现在的DLL,把接口引出来。
yxder
2009-07-08
打赏
举报
回复
编译不通过都
yxder
2009-07-07
打赏
举报
回复
我觉得可行,但是没有用过结构体调用,能不能给个实例代码呢?
Saingel
2009-07-07
打赏
举报
回复
带指针的试试用相应结构类型的引用调,
至少vb6是可以这样的
yxder
2009-07-07
打赏
举报
回复
求教啊!
yxder
2009-07-07
打赏
举报
回复
STDMETHODIMP CAttendEx::GetEnrollDataSC(LONG a, LONG b, BSTR* c)
{
// TODO: 在此添加实现代码
CString str;
BSTR *bstr=NULL;
long d;
long e[500];
long f;
typedef long (WINAPI *GetED)(long,long,long,long*,long[],long*);
HMODULE hModule;
hModule = ::LoadLibrary(L"FKAttend.dll");
if (!hModule)
{
MessageBox(NULL,L"DLL加载失败",L"LoadLibrary",MB_OK);
return S_FALSE;
}
GetED geted=(GetED)::GetProcAddress(hModule,"FK_GetEnrollData");
if (!geted)
{
MessageBox(NULL,L"获取函数地址失败",L"GetProcAddress",MB_OK);
return S_FALSE;
}
geted(CAttendEx::nHandleIndex,a,b,&d,e,&f);
str.Format(L"%ld,%ld,%ld",&d,e,&f);
*bstr = str.AllocSysString();
memcpy(c, bstr, sizeof(bstr));
freeLibrary(hModule);
return S_OK;
}
急啊,改成数组的调用也显示不出来
yxder
2009-07-07
打赏
举报
回复
直接返回不来值了!我那段代码如下:
STDMETHODIMP CAttendEx::GetEnrollDataSC(LONG a, LONG b, BSTR* c)
{
// TODO: 在此添加实现代码
CString str;
BSTR *bstr=NULL;
long d;
long e;
long f;
typedef long (WINAPI *GetED)(long,long,long,long*,long[],long*);
HMODULE hModule;
hModule = ::LoadLibrary(L"FKAttend.dll");
if (!hModule)
{
MessageBox(NULL,L"DLL加载失败",L"LoadLibrary",MB_OK);
return S_FALSE;
}
GetED geted=(GetED)::GetProcAddress(hModule,"FK_GetEnrollData");
if (!geted)
{
MessageBox(NULL,L"获取函数地址失败",L"GetProcAddress",MB_OK);
return S_FALSE;
}
geted(CAttendEx::nHandleIndex,a,b,&d,&e,&f);
str.Format(L"%ld,%ld,%ld",&d,&e,&f);
*bstr = str.AllocSysString();
memcpy(c, bstr, sizeof(bstr));
freeLibrary(hModule);
return S_OK;
}
还望高手指点!
ysysbaobei
2009-07-07
打赏
举报
回复
顶下
yxder
2009-07-07
打赏
举报
回复
TO:luwenzhuo
我想要的是这个,但是不知道能不能测试成
还有一个问题就是 其中的一个存储的数据很长
我测试完回复
LiuTaiYe
2009-07-07
打赏
举报
回复
楼主应该就是要这个
「已注销」
2009-07-07
打赏
举报
回复
DLL已经编译好了?
如果已经编译好了,就别幻想了!
大前置
2009-07-07
打赏
举报
回复
USES_CONVERSION;
long fun(long a1,long b1,BSTR *c1)
{
CString str;
BSTR *bStr=NULL;
long c,d,e;
fun(a1,long b1, &c, &d, &e);
str.Format("%ld%ld%ld", c, d,e);
bStr = str.AllocSysString();
memcpy(c1, bStr, sizeof(BSTR));
return 0;
}
Walf_ghoul
2009-07-07
打赏
举报
回复
不知道。帮顶
Fleeboy
2009-07-07
打赏
举报
回复
楼主找本<<windows编程>>看看
Fleeboy
2009-07-07
打赏
举报
回复
当然可以的。
java用JNA调用
dll
实例,包含各种参数调用
实例
中
演示了各种参数形式的
DLL
函数调用,如:基本数据类型、基本数据类型的
指针
和引用、结构体、结构体的
指针
和引用、函数
指针
和回调函数、字符串
指针
、输入数组、输出数组等,非常实用。
从资源
DLL
中
选取图标的对话框
这是一个从资源
DLL
中
选取图标的对话框
Python如何使用
DLL
传递
指针
参数?
在这篇文章
中
,我们介绍了如何在Python
中
使用
DLL
传递
指针
参数。我们使用了ctypes模块来加载
DLL
和定义参数类型及返回值类型。通过这些步骤,我们可以成功地将
指针
参数传递给
DLL
函数并从函数
中
获得返回值。在与动态链接库通信时,我们需要传递指向函数参数的
指针
。本文将介绍如何在Python
中
使用ctypes模块调用
DLL
并传递
指针
参数。在上面的代码
中
,我们使用ctypes.byref()函数获取指向变量的
指针
。现在,我们已经加载了
DLL
,接下来我们可以定义需要传递的参数类型和返回值类型。
python调用
dll
传
指针
参数
python调用
dll
传
指针
参数
python
dll
指针
_python 调用
dll
中
c或c++语言的带
指针
方法,
在项目开发
中
遇到了,python需要去调用一个动态链接库
dll
中
的c++方法。这个方法的参数为一个
指针
类型的参数,一个bool类型参数,在python
中
并未对数字类型进行区分。int LP_Agc ( double * a,bool b= true)所以在调用这个方法之前,第一步要将python
中
的类型转换为c语言类型。这个应该是python自带的a = c_double(1.0)#同理b ...
C++ 语言
65,208
社区成员
250,517
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章