Я пытаюсь экспортировать строку из моей DLL, строка из библиотеки, включенной в мою DLL.Моя DLL включает библиотеку CMMCore.lib, и есть класс CMMCore с функцией getDeviceAdapterNames()
.Эта функция возвращает строку.
Мой код на c ++ для libary (.lib):
#include "PluginManager.h"
...
std::vector<std::string> CMMCore::getDeviceAdapterNames() throw (CMMError)
{
return pluginManager_->GetAvailableDeviceAdapters();
}
...
Вызывает другую функцию из PluginManager.cpp
:
CPluginManager::GetAvailableDeviceAdapters()
{
std::vector<std::string> searchPaths = GetActualSearchPaths();
std::vector<std::string> modules;
for (std::vector<std::string>::const_iterator it = searchPaths.begin(), end = searchPaths.end(); it != end; ++it)
GetModules(modules, it->c_str());
std::set<std::string> moduleSet;
for (std::vector<std::string>::const_iterator it = modules.begin(), end = modules.end(); it != end; ++it) {
if (moduleSet.count(*it)) {
std::string msg("Duplicate libraries found with name \"" + *it + "\"");
throw CMMError(msg.c_str(), DEVICE_DUPLICATE_LIBRARY);
}
}
return modules;
}
И мой код DLL:
#include <MMCore.h>
#include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp>
#include <vector>
using namespace std;
EXPORT void getDevice_dll(char* input_string)
{
CMMCore * v = new CMMCore;
v->CMMCore::getDeviceAdapterNames();
memcpy(input_string, v, 20);
}
Я хочу поместить строку из CMMCore :: getDeviceAdapterNames в * (input_string), но она не работает,
Есть ли способ поместить строку из CMMCore::getDeviceAdapterNames
в указатель или значение переменной, названное мной?