Я использую Visual Studio 2010 для .Net 4.0
Я работаю с неуправляемой DLL C ++, используя управляемую оболочку C ++.Я использую _declspec (dllexport) для экспорта неуправляемой библиотеки DLL. Ниже приведен файл заголовка для неуправляемой библиотеки DLL:
class DllExport KeyManager
{
public:
KeyManager(const char *pszKeyFileName, int thisProduct);
~KeyManager();
...
Затем я выполняю вызов неуправляемой библиотеки DLL из управляемой оболочки:
#include "stdafx.h"
#include "KeyModCLR.h"
#using <mscorlib.dll>
#include <msclr/marshal.h>
using namespace System;
using namespace System::Runtime::InteropServices;
using namespace msclr::interop;
MCKeyManager::MCKeyManager(String ^fileName, int thisProduct)
{
pszFileName = (char*)Marshal::StringToHGlobalAnsi(fileName).ToPointer();
m_pC = new KeyManager(pszFileName, thisProduct);
}
Это все прекрасно работает, когда проект нацелен на Win32, однако, когда я меняю целевую платформу на x64, как описано здесь , я получаю следующую ошибку:
Error 17 error LNK2019: unresolved external symbol "public: __cdecl
KeyManager::KeyManager (char const *,int)" (??0KeyManager@@$$FQEAA@PEBDH@Z) referenced in
function "public: __clrcall MCKeyManager::MCKeyManager(class System::String ^,int)" (?? 0MCKeyManager@@$$FQE$AAM@PE$AAVString@System@@H@Z)
Я не очень знаком с C ++, так как я не писал этот код, поэтому я не знаю, упускаю ли я что-то очевидное.Я читал, что оформление импортированных функций отличается для 64-битных и 32-битных, но я не уверен, как это обязательно повлияет на меня.
Я искал ответ весь день и не нашел, поэтому любые предложения или советы будут с благодарностью.
Заранее спасибо