【发布时间】:2011-07-19 05:28:51
【问题描述】:
我是 .net 的新手。 我有一个托管的 C++ 库。看起来像这样。
// header file
namespace cppnetdll
{
public __gc class Class1
{
public:
static int foo_int(void);
};
}
// source file
namespace cppnetdll
{
int Class1::foo_int(void)
{
return 123;
}
}
我可以从托管的 c++ 程序中调用它。当我尝试从 一个 C# 程序,我得到编译器错误:“类型或命名空间名称 找不到“Class1”(您是否缺少 using 指令或 程序集引用?)”错误是指下面的 DllImport 行。
这是 C# 代码 [代码:1:a72c1df571] 命名空间 cuser { 公共课xxx { [DllImport("cppnetdll.dll")] 外部 int Class1.foo_int();
private void yyy() { int i =
foo_int(); }
}
}[/code:1:a72c1df571]
我尝试了各种方法,但都没有成功。什么是魔法 语法?
有趣的是,我可以公平地从 C# 调用非托管 C++ 函数 通过将函数声明为“C”并从 DLL 导出来轻松实现。 我希望调用托管代码更容易。也许这很容易 没有人想过记录它!
【问题讨论】:
-
您是 .NET 新手并使用“C++ 托管扩展”?在2011年?获取更新版本的 Visual C++(Visual Studio 2005 或更新版本即可)并开始使用 C++/CLI。使用 MC++ 代码只有一件事:在找到它的任何地方删除它。
标签: c# c++ visual-studio visual-studio-2010