, , COM- .NET, (++ ). :
namespace cSharpRiJHarn
{
[Guid("ED1483A3-000A-41f5-B1BC-5235F5897872")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[ComVisible(true)]
public interface IRijndaelLink
{
string encrypt(string s);
string decrypt(string s);
}
[Guid("7C13A8C6-4230-445f-8C77-0CA5EDECDCB5")]
[ComVisible(true)]
public class RijndaelLink : IRijndaelLink
{
public string encrypt(string s)
{
return Rijndael.EncryptString(s);
}
public string decrypt(string s)
{
return Rijndael.DecryptString(s);
}
}
}
.NET COM, RegAsm. (.TLB), - ( , X86, X64):
c:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe YourAssembly.dll /tlb:YourAssembly.tlb /codebase
. codebase, .
.TLB . , ComVisible. , Dispatch Dual, COM Automation (VB, VBA), (VBScript, JScript), IUnknown, C/++, IDispatch.
++ ++ Microsoft: #import Directive, Add References .NET., , COM-:
#include "stdafx.h"
#import "c:\MyPathToTheTlb\YourAssembly.tlb"
using namespace YourAssembly;
int _tmain(int argc, _TCHAR* argv[])
{
CoInitialize(NULL);
IRijndaelLinkPtr ptr(__uuidof(RijndaelLink));
_bstr_t s = ptr->encrypt("hello");
printf("%S", (LPWSTR)s);
CoUninitialize();
return 0;
}
, #import (_bstr_t, .NET String Automation BSTR , IUnknown) , .
, IMHO .