c#中调用vc下的dll的问题(100分)

  • 主题发起人 主题发起人 lincker
  • 开始时间 开始时间
L

lincker

Unregistered / Unconfirmed
GUEST, unregistred user!
在c#中调用vc下写的dll总是出错。
我把全部代码拷到.net下,编译dll成功,再引用时报告:不是合法的程序集或组件。
应该怎么办?请高手指点!
 
常规dll代码不能引用。能够import的是.net class library dll。
正确调用方式:
[DllImport("KERNEL32.DLL", EntryPoint="MoveFileW", SetLastError=true,
CharSet=CharSet.Unicode, ExactSpelling=true,
CallingConvention=CallingConvention.StdCall)]
public static extern bool MoveFile(String src, String dst);
详细解释用DllImportAttribute class作为index查找msdn。
 
那我应该怎么办呢?
怎么编译成.net class library dll??
 
1. 假设你用vc编的yourdll.dll中有如下函数:
extern "C" _declspec(dllexport) intdo
It(int a,int b)
{
return a+b;
}
//....
2.在c#中调用如下:
using System;
using System.Runtime.InteropServices;
class PInvoke1App
{
[DllImport("D://tmp//yourdll.dll")]
static extern intdo
It(int a,int b);
public static void Main()
{
int i;
i=doIt(1,2);
Console.WriteLine(i.ToString());
Console.Read();
}
}
 
后退
顶部