none
.NET: what could cause the TIbimp: warning TI0000? RRS feed

  • Question

  • Our project references third party COM dlls, during build we get the following warnings:

    TlbImp : warning TI0000: The type library importer could not convert the signature for the member 'tagRemSNB.rgString'.

    TlbImp : warning TI0000: The type library importer could not convert the signature for the member 'tagRemSNB.rgString'.

    TlbImp : warning TI0000: Interface 'IMinPulsarFrequency' is marked as [dual], but does not derive from IDispatch. It will be converted as an IUnknown-derived interface.

    TlbImp : warning TI0000: At least one of the arguments for 'Period.GetCyclableParams' cannot be marshaled by the runtime marshaler.  Such arguments will therefore be passed as a pointer and may require unsafe code to manipulate.

    TlbImp : warning TI0000: At least one of the arguments for 'ICycledParameters.GetCyclableParams' cannot be marshaled by the runtime marshaler.  Such arguments will therefore be passed as a pointer and may require unsafe code to manipulate.

    TlbImp : warning TI0000: The type library importer could not convert the signature for the member 'tagRemSNB.rgString'.

    The project is built and running without the problem. However, we want get ride of the build warnings. Does anyone has a clue what could be cause those warnings? Thx!


    JaneC


    • Edited by JJChen Friday, January 25, 2013 5:13 AM
    Friday, January 25, 2013 5:13 AM

Answers

  • Adavesh,

    Thanks for replying our question.

    We install the third party software in the development PC. We do not have problems to run the third party software. So we do not think that "one or more DLLs that the third party COM refers are not registered" is an issue.

    We found the following link: http://stackoverflow.com/questions/4100431/what-causes-the-type-library-importer-could-not-convert-the-signature-for-the-m which mentions

    ---------------------------

    Create your own interop assembly like this (ActiveDs for example):

    tlbimp activeds.tlb /out:c:\temp\Interop.ActiveDs.dll /silent

    Reference this instead of ActiveDs, and the errors dissappear.

    --------------------------------------------

    So we do following steps:

    1.      Add needed DLLs in IDE.

    2.      Build project and it will generate all Interop.xxxlib

    3.      Copy those Interop.xxxlibs into temp folder

    4.      Remove all referenced DLLs in project

    5.      Add all Interop.xxxlibs as reference.

    6.      Build the project and all TLbImp warnings go away.

    Note: you need to check in those built Interop.xxxlibs into shared folder, otherwise it will break the build!

    Another note: Directly referencing Interop.xxxlibs instead of xxx.dlls removes all compiler warnings. However, if there is new version of those xxx.dlls, you need to regenerate those Interop.xxxlibs again. If directly referencing xxx.dlls, you will keep compiler warnings and you do not need to manually regenerate those Interop.xxxlibs when those xxx.dlls changes to newer versions. 


    JaneC




    • Edited by JJChen Saturday, January 26, 2013 7:28 PM
    • Marked as answer by Mike FengModerator Monday, January 28, 2013 1:15 PM
    Saturday, January 26, 2013 7:22 PM

All replies

  • I believe one or more DLLs that the third party COM refers are not registered. That's why TLBIMP has failed to generate RCW properly. Use OleView on third party COM dll to check all dependencies and ensure all those are registered.

    If you continue to use the generated RCW, the execution might fail when it refers a component from unregistered DLL.

    I hope this helps.


    Please mark this post as answer if it solved your problem. Happy Programming!

    Friday, January 25, 2013 5:55 AM
  • Adavesh,

    Thanks for replying our question.

    We install the third party software in the development PC. We do not have problems to run the third party software. So we do not think that "one or more DLLs that the third party COM refers are not registered" is an issue.

    We found the following link: http://stackoverflow.com/questions/4100431/what-causes-the-type-library-importer-could-not-convert-the-signature-for-the-m which mentions

    ---------------------------

    Create your own interop assembly like this (ActiveDs for example):

    tlbimp activeds.tlb /out:c:\temp\Interop.ActiveDs.dll /silent

    Reference this instead of ActiveDs, and the errors dissappear.

    --------------------------------------------

    So we do following steps:

    1.      Add needed DLLs in IDE.

    2.      Build project and it will generate all Interop.xxxlib

    3.      Copy those Interop.xxxlibs into temp folder

    4.      Remove all referenced DLLs in project

    5.      Add all Interop.xxxlibs as reference.

    6.      Build the project and all TLbImp warnings go away.

    Note: you need to check in those built Interop.xxxlibs into shared folder, otherwise it will break the build!

    Another note: Directly referencing Interop.xxxlibs instead of xxx.dlls removes all compiler warnings. However, if there is new version of those xxx.dlls, you need to regenerate those Interop.xxxlibs again. If directly referencing xxx.dlls, you will keep compiler warnings and you do not need to manually regenerate those Interop.xxxlibs when those xxx.dlls changes to newer versions. 


    JaneC




    • Edited by JJChen Saturday, January 26, 2013 7:28 PM
    • Marked as answer by Mike FengModerator Monday, January 28, 2013 1:15 PM
    Saturday, January 26, 2013 7:22 PM
  • Does anyone has a clue what could be cause those warnings? Thx!

    Usually, the reason of the warning is what follows the semi-colon. What is the signature of the member 'tagRemSNB.rgString'? Is IMinPulsarFrequency derived from IDispatch? What are the parameters of GetCycableParams?
    Monday, January 28, 2013 8:33 AM