سؤال

في بناء DLL مع دلفي 2006

Foo(aPath: widestring);
begin
  _rootPath := aPath;
end;

في منفذ قابل للتنفيذ مع دلفي 2010

_Foo := GetProcAddress(FooModule,’Foo’);
_Foo(‘123456’);

يخطو إلى DLL، Apath = '123'. في الواقع، يتم قطع أي سلسلة تمرير بالضبط في النصف.

1.) لماذا تنخفض الحرفي إلى النصف؟ 2.) كيف يمكنني إصلاحه؟

هل كانت مفيدة؟

المحلول

تأكد من أن المعلمة _foo عبارة عن تردد في عام 2010

نصائح أخرى

Widestrings موجودة في كومة Windows ولم يتم إدارتها بواسطة Delphi Memory Manager. يمكن مشاركة Widestrings (على عكس أنواع السلسلة الطويلة الأخرى) بين EXE و DLL دون مشاكل.

أفترض أنك تحصل على بيانات خاطئة لأن Widestring هو نوع مدار ومدير الذاكرة ل DLL ويمكن التنفيذ مختلفا. إذا كنت تستطيع إعادة ترجمة DLL جعل نوع Apath ليكون pwidechar

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top