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

cdmagg cdmagg 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
近在做一个项目,需要加解密,算法是用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就会出现这类问题?

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


...全文
评论 8
收藏 已收藏
分享
返回顶部
cdmagg
.NET Framework 17,748 成员 24,324 内容