1. C#中调用C++编写的dll,能不能去实例化这个dll中的类,或者说如何通过这个类调用这个类中的静态方法
1.C#中调用C++编写的dll,能不能去实例化这个dll中的类,或者说如何通过这个类调用这个类中的静态方法例子extern"C"{class__declspec(dll...
1. C#中调用C++编写的dll,能不能去实例化这个dll中的类,或者说如何通过这个类调用这个类中的静态方法
例子
extern "C" {
class __declspec(dllexport) MRT
{
public :
static int Init();
static int Login(UserInfo *uinfo);
static int check();
static int QueryManualTask();
};
};
在C#中如何调用dll中这些方法。 展开
例子
extern "C" {
class __declspec(dllexport) MRT
{
public :
static int Init();
static int Login(UserInfo *uinfo);
static int check();
static int QueryManualTask();
};
};
在C#中如何调用dll中这些方法。 展开
展开全部
我把我代码中的一些调用C++写的Dll函数的方法发给你看看。希望对你有所帮助,记得要再Vs中开放允许调用不安全的代码。不然是调用不了的
[DllImport("fisLANTestDLL.dll", EntryPoint = "StartDB", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
extern public unsafe static int StartDB(sbyte* msg);
[DllImport("kernel32")]
public static extern int GetPrivateProfileInt(string lpApplicationName,
string lpKeyName, int nDefault, string lpFileName);
[DllImport("fisLANTestDLL.dll", EntryPoint = "StartDB", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
extern public unsafe static int StartDB(sbyte* msg);
[DllImport("kernel32")]
public static extern int GetPrivateProfileInt(string lpApplicationName,
string lpKeyName, int nDefault, string lpFileName);
追问
C#中调用C++编写的dll,能不能去实例化这个dll中的类,我调用的是类MRT中的方法,应该怎么调用,请大侠说清楚
追答
我沒有試過去實例化Dll中的類,你實例化類也無非是去調用它裏面的函數或是方法。我給你的2個例子,就是可以直接調用Dll中包含的方法或是函數的[DllImport("kernel32")] public static extern int GetPrivateProfileInt(string lpApplicationName,string lpKeyName, int nDefault, string lpFileName)中GetPrivateProfileInt就是Dll中的函數名稱,而[DllImport("kernel32")]中的“kernel32”就是你要調用的Dll名稱。你需要在頂部先加入using System.Runtime.InteropServices; 這樣你就可以調用外部的Dll了。你試試看吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
和调用其他的DLL的方法一样,但是你首先得将C++的类编译发布成DLL文件才行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询