使用dllimport调用c++的dll ,如何调试这个dll呢?

ComeOnBabys 2008-02-09 11:09:05
如题:我新建两个项目,一个是c#的exe,一个是win32的dll.
c#中使用dllimport的方式调用该dll,调用过程中发生类似地址访问越界的异常。

我想知道dll中哪错了。如何调试呢?如果在dll中调试,选了入口的exe,但在dll 中的断点根本就不停,就执行过去了,
请问:
如何才能在dll中的断点中停下来呢?
...全文
1934 41 打赏 收藏 转发到动态 举报
写回复
用AI写文章
41 条回复
切换为时间正序
请发表友善的回复…
发表回复
longrenle 2011-02-16
  • 打赏
  • 举报
回复
哦~ 对我来说是大前年的帖子了
呵呵 看来受益人无数啊

设置dll工程为启动项目
C++DLL工程属性->调试->调试器类型->仅限本机 就OK了!
longrenle 2011-02-16
  • 打赏
  • 举报
回复
汗~ 前年的帖子了   不知道能行不  试试
  • 打赏
  • 举报
回复
是不是封送的参数类型不对,内存访问跨界一般是参数的数据类型没有对齐
mm304321141 2010-02-07
  • 打赏
  • 举报
回复
汗。。。是前年啊。。。
mm304321141 2010-02-07
  • 打赏
  • 举报
回复
哎呀。。。去年的帖子了。。。

我刚刚也碰到这问题,
C++DLL工程属性->调试->调试器类型->仅限本机

就可以命中断电了......
hansion3406 2008-05-11
  • 打赏
  • 举报
回复
也把那个DLL发给我一下吧。
我也要参考一下,怎么样破解
我要破解的啊。
rocky.bourne@gmail.com
ComeOnBabys 2008-02-16
  • 打赏
  • 举报
回复
对了,我给你的是08的项目,我在05上试试,打不开啊。我用05重写了一份。也给你吧。
ComeOnBabys 2008-02-16
  • 打赏
  • 举报
回复
用户名和密码是买的,默认为空就可以。

我也没这个dll,我用的类库就是把引擎装上以后,从c盘安装文件夹里考的几个文件。
然后把弹出的那个提示对话框用90换了。

问题是如果从c++的win32调用就没事,为什么c#不行呢?
真相重于对错 2008-02-15
  • 打赏
  • 举报
回复
又看了一下,
convertAgent.dll ,调用另外一个dwmapi.dll
他在初始化时会装载这个dll,我这里没有
真相重于对错 2008-02-15
  • 打赏
  • 举报
回复
还有你能给我提供一下
3: char *RegName
注册名 (试用版本可以为空)

3: char *RegCode:
注册KEY(试用版本可以为空)
这几个参数,我再试一下
真相重于对错 2008-02-15
  • 打赏
  • 举报
回复
我就是用c++作的
ComeOnBabys 2008-02-15
  • 打赏
  • 举报
回复
请问出的错误和我那个异常一样吗?
我认为不是版本的问题,如果不做跨语言调用
写一个c++ 的win32 调用那个dll,一点问题也没有。
真相重于对错 2008-02-15
  • 打赏
  • 举报
回复
int __stdcall InitAgent(DWORD dwInputType,DWORD WaitTime=300,char *RegName = "",char *RegCode="");

函数功能:
初始化 ConvertAgent 环境,
返回码:
如果函数成功返回 0 ,否则查询 .h文件中定义的错误码。
参数说明
1: DWORD dwInputType

SM_DOC_ONLY :文档类型 例如 : doc .xls .pdf .wps .ppt 等
(需要SmartPrinter 支持)

SM_DOC_ONLY :文档类型 例如 : .bmp .jpg .gif .png .tiff .txt .log 等
(不需要SmartPrinter 支持)

SM_ALL_TYPE: 包含以上两种类型

2: DWORD WaitTime (秒)
转换文档最大等待时间。

3: char *RegName
注册名 (试用版本可以为空)

3: char *RegCode:
注册KEY(试用版本可以为空)
====================
一加载那个dll,就出错,还是找一个正式版的吧
真相重于对错 2008-02-14
  • 打赏
  • 举报
回复
这个多字节如何设?我试过没有参数传递的情况,出的问题也一样。
============================================================
c++
项目属性-〉常规-〉字符集-〉使用多字节字符集
C#
[DllImport("convert.dll", CharSet = CharSet.Ansi)]
static extern int Convert(string inPaht, string outPath);
这两个需要一致,vc2005 以上 c++ 默认是unicode


你说的那个dll?不是正版,没错,但基本的功能不能出错吧, 您注意那个异常了嘛?请问那个异常如何解决呢?
======================================================================
我这里没有异常,而是弹出对话框,说请使用正式版软件,就退出了
葫芦鬼 2008-02-14
  • 打赏
  • 举报
回复
请把你win32 dll项目的属性里一个选项改为mixed
ComeOnBabys 2008-02-14
  • 打赏
  • 举报
回复
一,你的c#调用字符编码是ansi , vc2008 要记得设为多字节
------------------------------------------------------------------
这个多字节如何设?我试过没有参数传递的情况,出的问题也一样。


二,你调用的不是正式版的软件,所以一加载就会出错
----------------------------------------------------------------
你说的那个dll?不是正版,没错,但基本的功能不能出错吧,

您注意那个异常了嘛?请问那个异常如何解决呢?
ComeOnBabys 2008-02-14
  • 打赏
  • 举报
回复
to:hdt
更改c++ dll中的字符集后,问题依旧。


我这里没有异常,而是弹出对话框,说请使用正式版软件,就退出了
-----------------------------------------------------------------
是不是提示:次版本dll为测试dll,请购买正版啊?
实在对不起啊,浪费您的时间了,我给你的dll是原始的,其实我破解了已经。我再发给您一个破解了的。
异常会在项目:Convert_test2编译后的exe双击时出来,那个异常是我的关键。真是麻烦您了!先行谢过!

真相重于对错 2008-02-14
  • 打赏
  • 举报
回复
我这里没有vs2008 ,用的是2005 可以调试,注意两个问题,
一,你的c#调用字符编码是ansi , vc2008 要记得设为多字节
二,你调用的不是正式版的软件,所以一加载就会出错
ComeOnBabys 2008-02-12
  • 打赏
  • 举报
回复
顶下。
cnzdgs 2008-02-11
  • 打赏
  • 举报
回复
把Debugging设置中的Debugger Type改成Native Only或者Mixed,再调试dll就可以了。
加载更多回复(21)

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧