当前位置:编程学习 > C#/ASP.NET >>

C++,C#双面手请进,CLI\C++ 调用C# library 方法

近在做一个项目,需要加解密,算法是用C#写的, 然后用C++及CLI\C++以Mixed Mode写一个DLL,这个DLL最终是要被纯C++调用的,调用的人完全不懂C#。

C#做的加解密大致是
C#:
public class Encryptor{
public:
    Encryptor(string keyIV);
    bool Encrypt(string sourcefile, string destfile) {
        ...
    }
    bool Decrypt(string sourcefile, string destfile) {
        ...
    }
}

C++CLI写的DLL是这样的:
BOOL EncryptWrapper::EncryptWrapper(LPCWSTR lpszSourceFile, LPCWSTR lpszDestFile) {
BOOL ret = FALSE;
        string^ source = gcnew String(lpszSourceFile);
        string^ des = gcnew String(lpszDestFile);

Encryptor^ encryptor = gcnew Encryptor(m_keyIV);
encryptor->EncryptFile(source, des);

return ret;
}


编译的时候出现错误:
Error 5 error C2039: 'EncryptW' : is not a member of 'XXX::NetUtil::Encryptor'

我理解大致上错误就是Unicode的版本方法需要加W。

我的疑问就是为什么我调用系统类库,只要按msdn的方法不需要加W,或者A。自己编译的Class Library就会出现这类问题?

项目很急,急需大家帮忙。
       

--------------------编程问答-------------------- 楼主是要把c#代码转c++的嘛?//

--------------------编程问答--------------------
引用 1 楼 zanfeng 的回复:
楼主是要把c#代码转c++的嘛?//

是的,就是写一个wrapper dll给c++调用,不想用com来interop。 --------------------编程问答-------------------- OpenGL高手请进:http://topic.csdn.net/u/20100616/11/4419a6ae-978f-4c73-a6ec-ed71477304c3.html --------------------编程问答-------------------- 应该不会是这样的错误,
是否有重名的方法。。 --------------------编程问答-------------------- 比如 系统的 API --------------------编程问答-------------------- 参考这个资料吧!

怎样在MFC中调用C#编写的DLL
http://dotnet.chinaitlab.com/CSharp/749026.html --------------------编程问答--------------------
引用楼主 cdmagg 的回复:
Encryptor^ encryptor = gcnew Encryptor(m_keyIV);
encryptor->EncryptFile(source, des);


EncryptFile这个方法是哪里来的?应该是encryptor->Encrypt(source, des);? --------------------编程问答-------------------- 不懂,帮顶
补充:.NET技术 ,  .NET Framework
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,