【发布时间】:2011-11-20 21:03:56
【问题描述】:
c# 中有一个 dll 有一个接受字节数组的方法。
public void CheckImageForFedCompliant(byte[] image)
{
LoadImage(image);
if (_errorMessages == null)
{
_errorMessages = new List<String>();
}
_errorMessages.Clear();
// The image did not match the tiff specification so do not try to perform other tests.
if (!_tiffReader.IsTiff)
{
_errorMessages.Add("does not match the tiff specification");
}
if (!_tiffReader.IsSingleStrip)
_errorMessages.Add("is not single strip");
if (!_tiffReader.IsSinglePage)
_errorMessages.Add("contains more than one page");
TestCompression();
TestPhotometricValue();
TestImageWidthIsValidAndPresent();
TestImageLengthIsValidAndPresent();
TestXandYResolutionIsValidAndPresent();
TestResolutionUnitIsValidPresent();
TestStripByteCountsIsPresent();
TestStripOffsetsIsPresent();
TestRowsPerStripIsValidAndPresent();
TestNewSubfileTypeIsValidAndPresent();
TestBitPerSampleIsValidAndPresent();
TestThresholdingIsValidAndPresent();
TestFillOrderIsValidAndPresent();
TestOrientationIsPresent();
TestSamplePerPixelIsValidAndPresent();
TestT6OptionsIsValidAndPresent();
}
}
我在 Delphi 中使用的这个 Dll(已注册并能够成功调用 dll 方法)。 具有指针和图像大小的 delphi 函数。我正在计算这两个来获取字节数组, 但是当我传递它时,会出现“参数不正确”之类的错误
Function TscImage.Validate (pImagePointer : Pointer; dwImageSize : Cardinal) : Boolean;
var
ImageByteArray : array of byte;
begin
SetLength(ImageByteArray, dwImageSize);
Move(pImagePointer^, ImageByteArray, dwImageSize);
eFedImageCompliantResult := ImagingCommonIntrop.CheckImageForFedCompliant(ImageByteArray[0]);
// eFedImageCompliantResult := ImagingCommonIntrop.CheckImageForFedCompliant(ImageByteArray); internal error E6724
Result := true;
end;
谁能分享这方面的一些信息? 或任何建议。
【问题讨论】:
-
请显示您的确切 C# 代码。你想调用 C DLL 还是 Delphi 函数?
-
您正在尝试从非托管代码调用托管程序集?这个托管程序集是公开为 COM 对象还是什么?
-
@weismat ... C# 代码运行良好,但我担心的只是在 Delphi 中传递正确的参数
-
@DarinDimitrov ya 它被公开并注册为程序集......其他方法是accesseble ..
-
可能是this 一些亮点