无法加载 DLL“LicenseCheck.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

mzy939216 2010-06-13 03:32:40
c++代码用于生成一个DLL,里面有函数
bool CheckLicense(char* pLicPath,int& nModulID)
{
...
}


我现在用c#调用dll
[DllImport("LicenseCheck.dll")]
public static extern bool CheckLicense(string pLicPath, int nModulID);

public void NewProject()
{
bool LicenseIsGood = CheckLicense(System.Windows.Forms.Application.StartupPath, 0);//出错
...
}

提示标题上的错误!

哪位能帮我这个小忙,解解惑
...全文
539 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
mzy939216 2010-06-18
  • 打赏
  • 举报
回复
还有个帖子挂在这给忘了,我已经解决这个问题了,我最后通过LicenseCheck.dll又用c++写了一个exe执行程序,问题就解决了
Jellyfancy 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mzy939216 的回复:]

自己座个沙发
另一个问题:
c#中对应的CheckLicense后面的参数应该怎么写呢?像上面那样写对吗?
[/Quote]
这个调用没有问题

[DllImport("LicenseCheck.dll",CharSet=CharSet.ansi)]试下
zhu_jiang 2010-06-13
  • 打赏
  • 举报
回复
没注意,应该使用byte*
zhu_jiang 2010-06-13
  • 打赏
  • 举报
回复
c++中char* pLicPath 代表ansistring,以'\0'结束,很可惜如果此dll不加入长度判断将存在溢出风险,提醒楼主小心
第2,.net中string 是 unicode类型,
建议楼主采用 ref char[256]作为参数把。
hejialin666 2010-06-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jellyfancy 的回复:]
一般是参数回传问题
回传的参数前面要加上ref
[/Quote]
同意这个观点!
nalisaki 2010-06-13
  • 打赏
  • 举报
回复
我一般都是把引用的dll加入到解决方案中来的,然后再加一个Using,引用如果按照引用函数的语法来引用的话,一般都不会出问题吧!!
Jellyfancy 2010-06-13
  • 打赏
  • 举报
回复
一般是参数回传问题
回传的参数前面要加上ref
mzy939216 2010-06-13
  • 打赏
  • 举报
回复
找不到模块问题我自己解决了!
现在出现一个新的问题:
尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
mzy939216 2010-06-13
  • 打赏
  • 举报
回复
自己座个沙发
另一个问题:
c#中对应的CheckLicense后面的参数应该怎么写呢?像上面那样写对吗?

111,097

社区成员

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

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

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