这可能是一个非常愚蠢的问题。
是否可以在 VS2008 中调试我没有源代码的 COM dll?
我想要这样做的原因是我将一个数组传递给 COM 方法,并且我希望该数组由该方法填充。
然而,该数组并未被填充。所以我想进入 COM 方法看看发生了什么。这可能吗?
下面是我正在使用的代码示例:
Array binaryArray = Array.CreateInstance(typeof(sbyte), 896);
bool success = photo.GetBinaryData(binaryArray);
IDL 为GetBinaryData
method:
[id(0x000000c9)]
HRESULT GetBinaryData(
[in] SAFEARRAY(char) buffer,
[out, retval] VARIANT_BOOL* retval);
The GetBinaryData
method 是我想要进入的 COM 方法。
编辑:添加一个有效的Delphi测试脚本
procedure TComTestForm.TestUserBtnClick(Sender: TObject);
var
nCnt :integer;
User :IUser;
Persona :IUserPersona;
ArrayBounds :TSafeArrayBound;
ArrayData :Pointer;
TagList :PSafeArray;
nSize :integer;
begin
User := Session.GetUser;
ArrayBounds.lLbound := 0;
ArrayBounds.cElements := 0;
TagList := SafeArrayCreate( varInteger, 1, ArrayBounds );
User.GetTags( TagList );
if SafeArrayAccessData( TagList, ArrayData ) = S_OK then
begin
nSize := TagList.rgsabound[0].cElements;
OutLine( '----Available Tags, ' + IntToStr(nSize) + ' tags' );
for nCnt := 0 to nSize - 1 do
begin
OutLine( IntToStr( IntegerArray(ArrayData)[nCnt] ) );
end;
大纲( ' - - ');
SafeArrayUnAccessData( TagList );
SafeArrayDestroy( 标签列表 );
结尾;
end;