DLLプロジェクトを作成して正常にビルドしました。次に、別のProject、TESTでDLLを使用しようとしましたが、次のエラーが発生しています。エラーLNK2001:DLLで未解決の外部シンボル
Error 1 error LNK2001: unresolved external symbol "public: void __thiscall SnoMessage::setRawMessageName(class ATL::CStringT<wchar_t,class StrTraitMFC_DLL<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >)" ([email protected]@@[email protected][email protected][email protected][email protected]@@@@@[email protected]@@Z)
リンカーのプロパティに必要なlibを追加しました。また、TESTインクルードディレクトリにヘッダーファイルも追加しました。関数は認識されていますが、それらのエラーを与え続けます。 DLLは、以下のファイルで構成されている
SnoMessage.h
#pragma once
#include "StdAfx.h"
class SnoMessage
{
public:
__declspec(dllexport) SnoMessage(void);
__declspec(dllexport) ~SnoMessage(void);
__declspec(dllexport) void setRawMessageName(CString messageName);
__declspec(dllexport) void setRawMessageType(CString messageType);
__declspec(dllexport) void setRawMessageAttributes(std::map<CString,CString> attributes);
__declspec(dllexport) CString getRawMessageName();
__declspec(dllexport) CString getRawMessageType();
__declspec(dllexport) std::map<CString,CString> getRawMessageAttributes();
private:
CString messageName;
CString messageType;
std::map<CString,CString> attributes;
};
SnoMessage.cpp
#include "stdafx.h"
#include "SnoMessage.h"
SnoMessage::SnoMessage(void)
{
}
SnoMessage::~SnoMessage(void)
{
}
void SnoMessage::setRawMessageName(CString messageName){
this->messageName = messageName;
}
void SnoMessage::setRawMessageType(CString messageType){
this->messageType = messageType;
}
void SnoMessage::setRawMessageAttributes(std::map<CString,CString> attributes){
this->attributes = attributes;
}
CString SnoMessage::getRawMessageName(){
return messageName;
}
CString SnoMessage::getRawMessageType(){
return messageType;
}
std::map<CString,CString> SnoMessage::getRawMessageAttributes(){
return attributes;
}
とテストで、私は次のことをやっている:
test.cpp
// test.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "SnoMessage.h"
int _tmain(int argc, _TCHAR* argv[])
{
SnoMessage *msg = new SnoMessage();
msg->setRawMessageName("TEST");
return 0;
}
詳細情報が必要な場合はお知らせください。ありがとうございます。
-1にコメントしてください。 – PTBG
どちらのプロジェクトもATLを使用していますか?両方のプロジェクトが同じランタイムライブラリを持っていますか?一般的な使用→ATLとC/C++の使用→コードGEneration→ランタイムライブラリ – devshorts
@devshortsはい、両方のランタイムライブラリとATLの使用はどちらのプロジェクトでも同じです – PTBG