Hello,
I am trying to use some .NET stuffs inside already existing native C++ source pool.
I experienced wierd "unresolved symbol" error and ultimately solved the problem but cannot explain why.
Could anyone please tell me what I did Thank you very much,
[ Problem Source Files ]
MixMode.lib (static lib created with /clr)
// ========= "MixMe.h" =========
#pragma once
#include <string>
namespace Minerva { namespace MixMode {
public ref class MixMe
{
protected:
System::Xml::XmlDocument^ _doc;
public:
MixMe(const std:tring& fileName);
virtual ~MixMe();
};
}}
// ========= "MixMe.cpp" ========
#include "MixMe.h"
Minerva::MixMode::MixMe::MixMe(const std:tring& fileName)
{
_doc = gcnew System::Xml::XmlDocument();
}
Minerva::MixMode::MixMe::~MixMe() {}
"MixTool.cpp" (console app with /clr) trying to link with "MixMode.lib"
#include "MixMe.h"
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("Hello, mixed mode operation...\n");
return 0;
}
Eventually, I am getting
Error 1 error LNK2020: unresolved token (06000001) Minerva.MixMode.MixMe::.ctor MixTool.obj
Error 2 error LNK2020: unresolved token (06000002) Minerva.MixMode.MixMe::~MixMe MixTool.obj
Error 3 fatal error LNK1120: 2 unresolved externals G:\PROJECT\Test\MixMode\Debug\MixTool.exe
[ Solved Source Files ] // Very strange why this works ...
MixMode.lib (static lib created with /clr)
// ========= "MixMe.h" =========
#pragma once
#include <string>
namespace Minerva { namespace MixMode {
public ref class MixMe
{
protected:
System::Xml::XmlDocument^ _doc;
public:
MixMe(const std:tring& fileName)
{ _doc = gcnew System::Xml::XmlDocument(); }
virtual ~MixMe() {}
};
}}
// ========= "MixMe.cpp" ========
#include "MixMe.h"
"MixTool.cpp" ==> Same as above. / Link success / Runtime Behaviour OK.