проблема взаимодействия С++ и Managed C++
От: Grimlock  
Дата: 27.12.05 09:38
Оценка:
написал я на С++ код и с компили в длл

#include <string>

__declspec (dllexport) char * TestStringFromStdString(std::string value)
{
return (char *) value.data();
}

__declspec (dllexport) char * TestStringFromStdStringRef(std::string & value)
{
return (char *) value.data();
}

__declspec (dllexport) char * TestStringFromStdStringPtr(std::string * value)
{
return (char *) value->data();
}

и на Managed C++

using namespace System;

typedef char * (* TestStringFromStdString) (std::string);
typedef char * (* TestStringFromStdStringRef) (std::string &);
typedef char * (* TestStringFromStdStringPtr) (std::string *);

int main(array<System::String ^> ^args)
{
HMODULE module = LoadLibrary(L"ppc.dll");

char * inputValue0 = "halloWorld";

TestStringFromStdString t0 = (TestStringFromStdString) GetProcAddress(module, "TestStringFromStdString");
TestStringFromStdStringRef t1 = (TestStringFromStdStringRef) GetProcAddress(module, "TestStringFromStdStringRef");
TestStringFromStdStringPtr t2 = (TestStringFromStdStringPtr) GetProcAddress(module, "TestStringFromStdStringPtr");

char * outputValue0 = t0(std::string(inputValue0));
char * outputValue1 = t1(std::string(inputValue0));
char * outputValue2 = t2(new std::string(inputValue0));

Console::WriteLine(gcnew String(outputValue0));
Console::WriteLine(gcnew String(outputValue1));
Console::WriteLine(gcnew String(outputValue2));

FreeLibrary(module);

return 0;
}

результаты вот :

(у↕

halloWorld

так вот авопрос почему не работает передача данных .... даже по ссылке? ... а по ссылке работает (хотя по опредеению ссылка это консантный указатель((
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.