请问如何在C#中调用非托管代码中的类?(C++生成)

cambest 2002-12-16 08:05:41
我的导师要我帮她设计界面,MFC我懂得不多,但是对.NET库到比较熟悉。只是我哪个导师只会C#,她写的底层驱动是用C++写的,我怎么引用她写的DLL中的类?
...全文
51 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dy_2000_abc 2002-12-20
  • 打赏
  • 举报
回复
指定/clr开关的目的是告诉编译器生成IL而不是本地代码,如果你使用Vs.net的话,/clr应该是默认的,不用管它了。
cambest 2002-12-18
  • 打赏
  • 举报
回复
哎呀,我看了很久都没有发现哪个/CLR选项,dy_2000_abc(芝麻开门) :谢谢你了!TO: brbrm(般若波若密),我哪个老师确实是个年轻的女孩子!她儿子才6岁!
ilian 2002-12-17
  • 打赏
  • 举报
回复
gz
dy_2000_abc 2002-12-17
  • 打赏
  • 举报
回复
我没有做过具体的工作,从理论上讲,使用cl重新编译那些代码,基本上就可以在c#中调用它们,比如:
文件:abc.cpp
#include "stdafx.h"
namespace abcd
{
public __gc class abc
{
public:
abc();
~abc();
int get();
};
abc::abc()
{}
abc::~abc()
{}
int abc::get()
{
return 1;
}
}
编译这个文件时,要指定/clr开关。其他的开关请参照msdn的相关章节

使用c#调用abc.dll,添加abc.dll:
using System;
using abcd;
namespace abc
{
public class abc
{
static void Main()
{
abcd.abc a=new abcd.abc();
Console.WritLine(a.get());
}
}
}

brbrm 2002-12-16
  • 打赏
  • 举报
回复
MFC完全不懂也不行. 你至少需要拿到别人类和方法的原形,然后在C#中建立自己的映射类.
using System.Runtime.InteropServices
class ClsCSharp
{
DllImport("clscplus.dll"); //别人的DLL
public static extern void(int x ...); //DLL中的方法,注意名称返回
//值类型 参数都必须一致
...
}
然后在你的方法中就可以直接调用了.
随便问一下,你导师是女的?你好幸福
cambest 2002-12-16
  • 打赏
  • 举报
回复
“我的导师要我帮她设计界面,MFC我懂得不多,但是对.NET库到比较熟悉。只是我哪个导师不会C#,她写的底层驱动是用C++写的,我怎么引用她写的DLL中的类?”
打错了。

110,538

社区成员

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

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

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