【发布时间】:2013-04-03 17:05:40
【问题描述】:
这是我的另一个问题,也导致了这个问题作为参考: How to call managed C++ methods from Un-managed C++
我已经成功创建了一个 C# COM 文件。现在我需要简单解释一下如何在非托管 C++ 中实现它。
我正在关注这个例子,但 c++ 部分很弱。 http://www.codeproject.com/Articles/7859/Building-COM-Objects-in-C
这是我的 COM 文件
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace cSharpRiJHarn
{
[Guid("ED1483A3-000A-41f5-B1BC-5235F5897872")]
public interface DBCOM_Interface
{
[DispId(1)]
String encrypt(string s);
[DispId(2)]
String decrpyt(string s);
}
[Guid("A6BCEC1D-B60C-4c97-B9AD-1FE72642A9F8"),
InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface DBCOM_Events
{
}
[Guid("7C13A8C6-4230-445f-8C77-0CA5EDECDCB5"),
ClassInterface(ClassInterfaceType.None),
ComSourceInterfaces(typeof(DBCOM_Events))]
public class RijndaelLink : DBCOM_Interface
{
public String encrypt(String s)
{
return Rijndael.EncryptString(s);
}
public String decrpyt(String s)
{
return Rijndael.DecryptString(s);
}
}
}
我只想要一个非常基本的示例,将其与非托管代码一起使用。 请在您的回答中包括:
- 我需要包含项目还是只包含 COM 的源文件
- 是否需要添加参考文献
- 传递字符串并使用 cout 打印出来的一个非常基本的示例。
感谢您的帮助!
【问题讨论】:
-
您唯一需要做的就是编译您提供的代码,然后使用相关语言的正确方法(引用 COM 库)在非托管代码中引用已编译的 COM 库。由于您的问题含糊不清,我不会更具体。
-
我的错误是含糊不清。我会尝试更清楚。我想要一个从基本的非托管 c++ 控制台程序调用上述加密和解密方法的示例。