проблема взаимодействия С++ и 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
так вот авопрос почему не работает передача данных .... даже по ссылке? ... а по ссылке работает (хотя по опредеению ссылка это консантный указатель((
Пока на собственное сообщение не было ответов, его можно удалить.