VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 723|回复: 6

关于exe调用dll问题

[复制链接]

2

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-2-1 09:20:02 | 显示全部楼层 |阅读模式
dll中输出一个字符串,exe中得到这个字符串。
dll:
   extern "C" _declspec(dllexport) int __stdcall CselectPathShel::Path(CHAR  *path)
{
   .......
}

exe:
CHAR  m_path[260] ;
m_path[0]=0;

Path(m_path);

在dll中的程序都是运行正常的,但是在exe中得到的参数m_path前面都是乱码,m_path[20]之后才是应该从dll得到的字符串,请问是什么问题,应该怎么改??

回复

使用道具 举报

0

主题

55

帖子

32.00

积分

新手上路

Rank: 1

积分
32.00
发表于 2020-3-17 12:45:02 | 显示全部楼层
调试看看DLL中该字符串前20个字符的值是什么。
回复

使用道具 举报

2

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-3-17 22:15:01 | 显示全部楼层
在dll中path“abc”,而在exe中m_path  “烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫abc”
回复

使用道具 举报

0

主题

55

帖子

32.00

积分

新手上路

Rank: 1

积分
32.00
发表于 2020-3-18 11:30:01 | 显示全部楼层
那在EXE先将该字符串赋成空值。
回复

使用道具 举报

2

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-3-19 11:30:01 | 显示全部楼层
每次在运行到Path(m_path)是都有一个中断的对话框弹出来,Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call.  This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
回复

使用道具 举报

2

主题

5

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
 楼主| 发表于 2020-3-22 14:15:01 | 显示全部楼层
我已经解决了,是我的函数应该定义在global里
回复

使用道具 举报

0

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-8-18 21:00:01 | 显示全部楼层
空串
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表