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就会出现这类问题?
项目很急,急需大家帮忙。