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

cdmagg 2010-06-14 02:16:25
近在做一个项目,需要加解密,算法是用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就会出现这类问题?

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


...全文
141 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
hfCoder 2010-06-16
  • 打赏
  • 举报
回复
不懂,帮顶
Sento 2010-06-16
  • 打赏
  • 举报
回复
[Quote=引用楼主 cdmagg 的回复:]
Encryptor^ encryptor = gcnew Encryptor(m_keyIV);
encryptor->EncryptFile(source, des);
[/Quote]

EncryptFile这个方法是哪里来的?应该是encryptor->Encrypt(source, des);?
捷哥1999 2010-06-16
  • 打赏
  • 举报
回复
参考这个资料吧!

怎样在MFC中调用C#编写的DLL
http://dotnet.chinaitlab.com/CSharp/749026.html
li45214521 2010-06-16
  • 打赏
  • 举报
回复
比如 系统的 API
li45214521 2010-06-16
  • 打赏
  • 举报
回复
应该不会是这样的错误,
是否有重名的方法。。
cdmagg 2010-06-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zanfeng 的回复:]

楼主是要把c#代码转c++的嘛?//
[/Quote]
是的,就是写一个wrapper dll给c++调用,不想用com来interop。
足球中国 2010-06-14
  • 打赏
  • 举报
回复
楼主是要把c#代码转c++的嘛?//

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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