首页 / C# / 如何使用C#中的C dll
如何使用C#中的C dll
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何使用C#中的C dll,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1936字,纯文字阅读大概需要3分钟。
内容图文
我正在尝试在我的c#项目中包含c库(DLL),但每次我这样做,我都会在VS2012中收到以下错误消息
A reference to 'C:\Users\HiepDang\Desktop\mydll.dll' could not be added. Please make sure that the file is accessible, and that it is a valid assembly or COM component.
当我尝试添加Com组件时,我在窗口中收到以下错误消息
One or more files do not contain components or type libraries. These files cannot be installed.
Error 80110425 occurred.
An unknown error occured. You should check all documentation for a solution. If no further information is available, please contract technical support
在C中,我可以使用dll,如:
//Header
extern "C" __declspec( dllimport ) int mymethod(const char *key, char *data, size_t buflen);
//Code test
const char* key = "test";
char* data = new char[1024];
int buflen = 1024;
int result = mymethod(key,data, buflen);
在C#中,我使用dll作为:
//define dll
[DllImport("mydll.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern int mymethod([MarshalAs(UnmanagedType.LPTStr)]string key, [MarshalAs(UnmanagedType.LPTStr)]string data, uint buflen);
//method test
private static int testdll()
{
string key = "123456789";
string buf = string.Empty;
mymethod(key, buf, 1024);
return 0;
}
你能告诉我任何解决方案吗?
P.s:我的英语不好.如果有什么不方便的话,我很抱歉
编辑:我在dll中解释方法中的变量. “key”作为字符串输入有8-13个字符,mymethod将被加密以生成“buf”.我需要变量“buf”.
解决方法:
在C#中你必须使用StringBuilder()
//define dll
[DllImport("mydll.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
public static extern int mymethod(string key, StringBuilder data, IntPtr buflen);
//method test
private static int testdll()
{
string key = "123456789";
StringBuilder buf = new StringBuilder(1024);
mymethod(key, buf, (IntPtr)buf.Capacity);
string buf2 = buf.ToString()
return 0;
}
请注意,size_t的大小为IntPtr,因为它在x86上为4个字节,在x64上为8个字节.
内容总结
以上是互联网集市为您收集整理的如何使用C#中的C dll全部内容,希望文章能够帮你解决如何使用C#中的C dll所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。