C#调用DLL的问题!(DLL用C++写的)

huanmm 2006-05-09 02:00:44
我在C#的代码里面要调用到一个DLL里的函数
这个DLL是用C++写的

我在.net开发环境里面直接把这个DLL加入到Project的References里面,结果报告说不是COM组件,无法添加。

于是我又在程序里面用Dllimport,但是运行到调用的那句话的时候还是说找不到DLL。代码如下:
[DllImport("XXXX.dll")]
public static extern int myFunc(string c);

public static int call_myFunc(string c)
{
return myFunc(c); //运行到这句话的时候说“XXXX.dll”无法装入!
}


请教高手,这是怎么回事,应该怎么解决啊???


P.S.由于DLL是客户给出的,是已经正常运行了若干年的,所以DLL本身应该是没有问题的

...全文
332 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanmm 2006-05-15
  • 打赏
  • 举报
回复
调查清楚了!
我的程序没有问题,客户的DLL也没有问题
是客户的DLL要调用另外一个DLL,而那个DLL没有被我拷贝到环境里面来,呵呵

谢谢大家~~
yinweihong 2006-05-09
  • 打赏
  • 举报
回复
DLL是个标准DLL,带EXPORTS的,建议先用DEPENDS查看一下DLL,看DLL里面是否还还需要引用其他一些DLL
Knight94 2006-05-09
  • 打赏
  • 举报
回复
即和exe放到一起
Knight94 2006-05-09
  • 打赏
  • 举报
回复
你应该放到项目中bin/debug目录下
Knight94 2006-05-09
  • 打赏
  • 举报
回复
to
extern "C" __declspec(dllexport) int __stdcall myFunc(char *);

这是dll工程中输出你的函数。
soaringbird 2006-05-09
  • 打赏
  • 举报
回复
看看dll的名字是否写错了,看看是不是xxxx.dll还需要别的dll
huanmm 2006-05-09
  • 打赏
  • 举报
回复
TO:wxdl1981(沉默之狼)
我是放在同一目录下的,我也试过写绝对路径,可是还是报一样的错:

An unhandled exception of type 'System.DllNotFoundException' occurred in XXXX.dll

Additional information: Unable to load DLL (C:\project\AA\XXXX.dll).
soaringbird 2006-05-09
  • 打赏
  • 举报
回复

但是在cpp文件的头上,又写了一句:
extern "C" __declspec(dllexport) int __stdcall myFunc(char *);

不知道这个是什么意思啊???

C++用Dll中的函数也得声明一下啊
真相重于对错 2006-05-09
  • 打赏
  • 举报
回复
copy c.dll %system32%
wxdl1981 2006-05-09
  • 打赏
  • 举报
回复
把DLL和程序放在同一目录下
huanmm 2006-05-09
  • 打赏
  • 举报
回复

C++里面是这样声明的:
int __stdcall myFunc(char *c)
{
。。。。。。
}


但是在cpp文件的头上,又写了一句:
extern "C" __declspec(dllexport) int __stdcall myFunc(char *);

不知道这个是什么意思啊???
xjjdanran 2006-05-09
  • 打赏
  • 举报
回复
是否DLL的路径设置不正确?
canjianchangkong 2006-05-09
  • 打赏
  • 举报
回复
學習
Knight94 2006-05-09
  • 打赏
  • 举报
回复
如果以上不行的话,最好贴出dll中函数是如何声明的
Knight94 2006-05-09
  • 打赏
  • 举报
回复
如果dll中的声明是如下的话:
int myFunc( char* c );

那么在C#中应该如下:
using System.Text;
[DllImport("XXXX.dll")]
public static extern int myFunc( StringBuilder c );

//Call
StringBuilder c = new StringBuilder( 256 );// 256 is length
myFunc( c );

110,571

社区成员

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

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

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