c#调用c++的DLL,添加引用时报错? 报错内容:请确保此文件可访问并且是一个有效的程序集或COM组件咋回事?用C++的项目测试没问题。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 c++生成的dll有些是基于MFC开发的,这些只能用C++使用。要其他语言调用的dll必须是用标准Win32方式写的dll项目。 如果是COM的话,要用regsvr32注册com 才能引用 只是c++的一个普通dll如C++dll中函数是这样的extern "C" _declspec(dllexport)int _stdcall MyTest() 则c#中是这样调用的[DllImport("Test.dll", CharSet = CharSet.Auto)]public static extern int MyTest(StringBuilder a);注意stdcall 标准调用 楼主可以查查相关资料 详细了解一下 我看了下,接口函数中的确没有6楼红色的 stdcall 没有的话用[DllImport("Test.dll", CharSet = CharSet.Auto, CallingConvention = CALLCONV.CC_CDECL)] lack_cx: CallingConvention = CALLCONV.CC_CDECL,这句话报错了呀,说什么无法强制类型转换 还是没有解决,唉。我按照lake_cx的建议,把dll放在环境路径了,但是没用啊。调试的时候报错,说没找到那个dll 非com的原生程序集只能使用显示引用 nacarat:你说的话我不太明白:(继续求问。 问题已经解决了,使用dllimport的时候dll文件需要放在release\debug下,我一直以为放在.cs文件一个路径的。没看清上面lake_cx的回复。谢谢各位。 进销存-保存销货单后,点击保存弹出是否打印,选择是后打印刚保存的销货单 求一些显示绑定数据的控件 如何判断数组中符合条件的个数? 求Data Access Application Block中UpdateDataset的用法 关于API函数声明输入的问题` 很简单的 莫名其妙的,treenode可以序列化却不可以反序列话啊?????! C#如何实现人人关键词的效果? 大家都什么控件做选项卡啊。 菜鸟问题:在线等候!我安装完.net不能进行单步调试! 什么是C#啊,我好歹也学了几年编程了,竟然不知道C#是什么东西 焦点移到一个按钮时,窗口如何截获键盘消息 VC#应用程序不能运行
只是c++的一个普通dll如
C++dll中函数是这样的
extern "C" _declspec(dllexport)int _stdcall MyTest()
则c#中是这样调用的
[DllImport("Test.dll", CharSet = CharSet.Auto)]
public static extern int MyTest(StringBuilder a);注意stdcall 标准调用 楼主可以查查相关资料 详细了解一下
[DllImport("Test.dll", CharSet = CharSet.Auto, CallingConvention = CALLCONV.CC_CDECL)]