社区
Windows SDK/API
帖子详情
关于dll中函数的问题
gengjia8512
2008-07-07 03:51:09
我自己写了一个dll文件,然后编译生成了一个dll和一个lib文件,但是用软件看dll里面却没有的我定义的函数(软件是好的看其他dll文件都有自定义函数,但都不是在我电脑上生成的)为什么?。
...全文
106
4
打赏
收藏
关于dll中函数的问题
我自己写了一个dll文件,然后编译生成了一个dll和一个lib文件,但是用软件看dll里面却没有的我定义的函数(软件是好的看其他dll文件都有自定义函数,但都不是在我电脑上生成的)为什么?。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
gengjia8512
2008-07-08
打赏
举报
回复
这个问题已经解决了。又出现了另外一个问题。
上面的DLL需要调用第三方DLL,在调用GetProcAddress后能找到函数地址,但一执行就跳出一个错误对话框,是不是在嵌套调用DLL时候要注意其他什么问题?
jxw1987628
2008-07-08
打赏
举报
回复
那个错误对话框是什么,上面提示什么信息?
我觉得要注意dll加载的顺序
loveshell
2008-07-07
打赏
举报
回复
头文件没有导出函数?
gengjia8512
2008-07-07
打赏
举报
回复
全部dll文件如下,就是5个函数,但Dll生成后没有这几个函数。
//---------------------------------------------------------------------------
#include <vcl.h>
#include <windows.h>
#include "CH375DLL.H"
#pragma hdrstop
#pragma argsused
HINSTANCE ins;
typedef void (* FUNC_close)(ULONG); //指向关闭设备函数
typedef HANDLE (* FUNC_open)(ULONG); //指向打开设备函数
typedef BOOL (*FUNC_read)(ULONG,PVOID,PULONG); //指向读数据函数
typedef BOOL (*FUNC_write)(ULONG,PVOID,PULONG); //指向读数据函数
typedef BOOL (*FUNC_reset)(ULONG); //指向读数据函数
FARPROC proc_close,proc_open,proc_read,proc_write,proc_reset;
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
{
if((ins=LoadLibrary( "CH375DLL.DLL" ))==NULL)
return 0;
else
return 1;
}
//---------------------------------------------------------------------------
/*打开USB设备*/
HANDLE _stdcall OpenUSBDevice()
{
/*取函数地址*/
proc_close=GetProcAddress(ins,"_CH375CloseDevice");
proc_open= GetProcAddress(ins,"_CH375OpenDevice");
proc_read= GetProcAddress(ins,"_CH375ReadData");
proc_write=GetProcAddress(ins,"_CH375WriteData");
FUNC_close CloseUsb=(FUNC_close)proc_close;
FUNC_open Open_Usb=(FUNC_open)proc_open;
CloseUsb(0);
//CH375CloseDevice(0); //关闭CH375设备
return Open_Usb(0);//CH375OpenDevice(0); //打开CH375设备,返回句柄,出错则无效,0对应第一个设备
}
/*关闭USB设备*/
void _stdcall CloseUSBDevice()
{
FUNC_close CloseUsb=(FUNC_close)proc_close;
CloseUsb(0);
//CH375CloseDevice(0); //关闭CH375设备
}
/*从下位机读取数据*/
int _stdcall ReadUSBDevice(unsigned char *Buff,unsigned long length)
{
FUNC_close CloseUsb=(FUNC_close)proc_close;
FUNC_open Open_Usb=(FUNC_open)proc_open;
CloseUsb(0);
//CH375CloseDevice(0); //关闭CH375设备
if(Open_Usb(0)==INVALID_HANDLE_VALUE) //打开CH375设备,出错则无效
{
return 0;
}
else
{
//unsigned long length=100;
FUNC_read Read_usb=(FUNC_read)proc_read;
Read_usb(0,Buff,&length);
//CH375ReadData(0,Buff,&length);
return length;
}
}
/*上位机向下位机传送数据*/
int _stdcall WriteUSBDevice(unsigned char *Buff,unsigned long length)
{
unsigned long len;
len=length; //保存用户要写入的数据长度
FUNC_close CloseUsb=(FUNC_close)proc_close;
FUNC_open Open_Usb=(FUNC_open)proc_open;
FUNC_write Write_usb=(FUNC_write)proc_write;
CloseUsb(0);
//CH375CloseDevice(0); //关闭CH375设备
if(Open_Usb(0)==INVALID_HANDLE_VALUE) //打开CH375设备,出错则无效
{
return 0;
}
else
{
Write_usb(0,Buff,&length);
//CH375WriteData(0,Buff,&length);
if(len!=length) //如果已经写入的长度与用户需要写入的长度不符则返回0
return 0;
else
return length; //否则返回实际长度
}
}
/*复位USB设备*/
void _stdcall ResetUSBDevice()
{
proc_reset=GetProcAddress(ins,"_CH375ResetDevice");
FUNC_reset Reset_usb=(FUNC_reset)proc_reset;
Reset_usb(0);
//CH375ResetDevice(0);
}
DLL
中
函数
返回CString的
问题
我用MFC做了个Regular
DLL
,其
中
一个接口形如: CString GetName(...); 或者: void GetName(CString &); 应用程序一般这样来调用: CString name = GetName(...);或者GetName(name) 我自己用得好好的,别人使用该
DLL
的时候居然出现_CrtIsVa
dumpbin查看
dll
中
函数
名字的
问题
利用微软的dumpbin.exe我们可以方便的查看
dll
中
的
函数
名字,为了能利用命令行,我们要首先把C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin设置为path环境变量,这个时候运行命令: dumpbin -exports xx.
dll
此时会出现一个
问题
,说是缺少mspdb100.
dll
,这个时候我们从C:\Progr
使用JNA调用
DLL
函数
遇到的
问题
在项目
中
需要使用JAVA调用
DLL
函数
,搞了几天终于搞通了,赶紧把理解的重要内容记录下来。 使用
DLL
函数
查看器进行查看
函数
名称及各参数 本例子就拿GetMac
函数
进行举例,记事本
中
为在VB环境
中
调用此
函数
的
函数
声明 此
函数
只有一个参数,通过传入字符串类型的IP地址,可以得到对应IP地址的MAC地址 因为传入参数为Long整形,故猜测应该传入的类型为指针类型,在JNA
中
对应
python调用
dll
函数
_关于从加载的
DLL
调用
函数
的Python基本
问题
我是在搜索和尝试各种各样的例子后提出这个
问题
的,但我似乎无法从加载的
DLL
调用
函数
。我想如果有人能给我举一个例子,我就能理解我做错了什么,并取得一些进展。在首先,使用Python 3.3.3可以加载
DLL
,如下所示:import ctypesftdi=ctypes.c
dll
.LoadLibrary('C:\\Python33\\
DLL
s\\FTCJTAG.
dll
')我可以调用一个不需要任何参数的函...
c++同名
dll
和
dll
中
同名
函数
加载
问题
1.前人工作 最近帮公司做一些软开方面的事,主要负责将项目环境进行统一配置,其
中
就涉及到了
dll
加载时如果遇到同名
dll
的解决方案,在网上寻找有效的解决方案,发现有价值的较少,找到可能有价值的链接如下: (1)https://blog.csdn.net/mincheat/article/details/51312173 这个博主,对加载同名
dll
进行了测试,并提出了一些解决方案,最终给出的解决方案时通过进程间通信,这种方案从理论上来讲是没有
问题
的,但比较麻烦。 (2)http://cn.voidcc
Windows SDK/API
1,222
社区成员
8,135
社区内容
发帖
与我相关
我的任务
Windows SDK/API
C++ Builder Windows SDK/API
复制链接
扫一扫
分享
社区描述
C++ Builder Windows SDK/API
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章