这可能是一个重复的问题,但据我搜索,我找不到问题。 返回的错误是依赖项的问题,但我不明白实际上是什么错误。所以我有一个Windows Phone项目,我添加了一个Windows Phone运行时组件项目, 我在.header中创建了一个类和2个公共函数:
public ref class Base64Encoding sealed
{
public:
String^ EncodeData(String^ StringData);
String^ DecodeString(String^ StringData);
};
在我的.cpp
我填充了函数
#include "pch.h"
#include "Base64Encode.h"
#include <wchar.h>
#include <string>
#include <iostream>
#include <stdlib.h>
String^ EncodeData(String^ StringData)
{
.
.
.
.
// return the result
return StringFromAscIIChars(result);
}
String^ DecodeString(String^ StringData)
{
.
.
.
return StringFromAscIIChars(result);
}
当我尝试构建2个LNK2001类型的错误时返回如下:
Error 1 error LNK2001: unresolved external symbol "public: virtual
class Platform::String ^ __cdecl
Base64Encode_::Base64Encoding::[Base64Encode_::__IBase64EncodingPublicNonVirtuals]::EncodeData(class
Platform::String ^)"
(?EncodeData@?Q__IBase64EncodingPublicNonVirtuals@Base64Encode_@@Base64Encoding@2@U$AAAP$AAVString@Platform@@P$AAV45@@Z) C:\Users\CodeNinja\Documents\Visual
Studio
2013\Projects\OpenscapeWP\Base64Encode\Base64Encode.obj Base64Encode
Error 2 error LNK2001: unresolved external symbol "public: virtual
class Platform::String ^ __cdecl
Base64Encode_::Base64Encoding::[Base64Encode_::__IBase64EncodingPublicNonVirtuals]::DecodeString(class
Platform::String ^)"
(?DecodeString@?Q__IBase64EncodingPublicNonVirtuals@Base64Encode_@@Base64Encoding@2@U$AAAP$AAVString@Platform@@P$AAV45@@Z) C:\Users\CodeNinja\Documents\Visual
Studio
2013\Projects\OpenscapeWP\Base64Encode\Base64Encode.obj Base64Encode
如果我删除.header中两个函数的public关键字,则链接器问题就会消失,但函数不可访问。
在标题中,我得到了一个静态函数,可以从ASCII转换为字符,但我认为这不是问题。那有什么不对?
答案 0 :(得分:0)
我想出了这个问题,即使我正在回答我自己的问题,我也会在这里留下答案。我在.cpp文件中创建了两个全局函数。他们需要成为班级成员:
String^ Base64Encoding::EncodeData(String^ StringData)
{ ... }
String^ Base64Encoding::DecodeString(String^ StringData)
{ ... }