none
VS2015: CComPtr<T>::CoCreateInstance hat den Fehler class ist nicht registriert seit der Migration von X86 nach X64

    Frage

  • VS2015:   CComPtr<T>::CoCreateInstance hat den Fehler  class ist  nicht registriert seit der Migration von X86 nach X64:

    Seit der Migartion von X86 nach X64 kann ich nicht mehr auf gewisse CCom Klassen zugreifen das Erstellen des  CComPtr<T> mit CoCreateInstance  ergibt den Fehler class is not registerded. Die entsprechende dll konnte ich mit regsv32  registrieren Ich habe sichergestellt dass ich die 64 Bit Version der regsv32 nehme die unter  C:\Windows\System32  und nicht die unter C:\Windows\SysWOW64 nehme. Muss ich sonst noch etwas anpassen ? Wie sehe ich ob meine Klasse registriert ist? Ist dies alles nur in der Windows Registry und wenn ja welche registry  Einträge werden benötigt. Können diese  auch von Hand erstellt  werden? Oder kann die Klasse sonst von Hand registriert werden ?

    Montag, 25. März 2019 12:43

Antworten

Alle Antworten

  • Die DLL, die Du registrieren möchtest, muss in 64 Bit vorliegen, da ein 64 Bit Prozess keine Funktionen in 32 Bit DLLs aufrufen kann . Mit regsvr32 kannst Du Dich einigermaßen entspannen, da wird automatisch die richtige Version genommen (32 oder eben 64 Bit).

    In der Registry sind die COMponenten jedenfalls unter HKCR\CLSID (64 Bit) oder HKCR\Wow6432Node\CLSID (32 Bit) registriert. Aber wie gesagt, prüfe zunächst die zu registrierende DLL.

    Dienstag, 26. März 2019 10:38
  • Die Dll ist 64 Bit überprüft mit DumpBin

    D:\Home\Atiras\V77Ma_64Bit_Branch001\Bin\Release>dumpbin /Headers NmsCmCommon.dll
    Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
    Copyright (C) Microsoft Corporation.  All rights reserved.


    Dump of file NmsCmCommon.dll

    PE signature found

    File Type: DLL

    FILE HEADER VALUES
                8664 machine (x64)
                   9 number of sections
            5C98C120 time date stamp Mon Mar 25 12:53:04 2019
                   0 file pointer to symbol table
                   0 number of symbols
                  F0 size of optional header
                2022 characteristics
                       Executable
                       Application can handle large (>2GB) addresses
                       DLL

    OPTIONAL HEADER VALUES
                 20B magic # (PE32+)
               14.00 linker version
                6400 size of code
               17200 size of initialized data
                   0 size of uninitialized data
                4AE8 entry point (0000000012504AE8) _DllMainCRTStartup
                1000 base of code
            12500000 image base (0000000012500000 to 0000000012523FFF)
                1000 section alignment
                 200 file alignment
                6.00 operating system version
                1.01 image version
                6.00 subsystem version
                   0 Win32 version
               24000 size of image
                 400 size of headers
                   0 checksum
                   2 subsystem (Windows GUI)
                 120 DLL characteristics
                       High Entropy Virtual Addresses
                       NX compatible
              100000 size of stack reserve
                1000 size of stack commit
              100000 size of heap reserve
                1000 size of heap commit
                   0 loader flags
                  10 number of directories
               19130 [     C50] RVA [size] of Export Directory
               19D80 [      DC] RVA [size] of Import Directory
               21000 [     5D0] RVA [size] of Resource Directory
               1E000 [     9C0] RVA [size] of Exception Directory
                   0 [       0] RVA [size] of Certificates Directory
               22000 [    1374] RVA [size] of Base Relocation Directory
               171D0 [      54] RVA [size] of Debug Directory
                   0 [       0] RVA [size] of Architecture Directory
                   0 [       0] RVA [size] of Global Pointer Directory
               172C8 [      28] RVA [size] of Thread Storage Directory
               17230 [      94] RVA [size] of Load Configuration Directory
                   0 [       0] RVA [size] of Bound Import Directory
                8000 [     580] RVA [size] of Import Address Table Directory
                   0 [       0] RVA [size] of Delay Import Directory
                   0 [       0] RVA [size] of COM Descriptor Directory
                   0 [       0] RVA [size] of Reserved Directory


    SECTION HEADER #1
       .text name
        5CB4 virtual size
        1000 virtual address (0000000012501000 to 0000000012506CB3)
        5E00 size of raw data
         400 file pointer to raw data (00000400 to 000061FF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    60000020 flags
             Code
             Execute Read

    SECTION HEADER #2
       .orpc name
         530 virtual size
        7000 virtual address (0000000012507000 to 000000001250752F)
         600 size of raw data
        6200 file pointer to raw data (00006200 to 000067FF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    60000020 flags
             Code
             Execute Read

    SECTION HEADER #3
      .rdata name
       132EA virtual size
        8000 virtual address (0000000012508000 to 000000001251B2E9)
       13400 size of raw data
        6800 file pointer to raw data (00006800 to 00019BFF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    40000040 flags
             Initialized Data
             Read Only

      Debug Directories

            Time Type        Size      RVA  Pointer
        -------- ------- -------- -------- --------
        5C98C120 cv            59 0001764C    15E4C    Format: RSDS, {D3F57980-28D9-4EE3-81E5-E32AD4E47A94}, 1, D:\Home\Atiras\V77Ma_64Bit_Branch001\Bin\Release\NmsCmCommon.pdb
        5C98C120 feat          14 000176A8    15EA8    Counts: Pre-VC++ 11.00=0, C/C++=67, /GS=67, /sdl=0, guardN=29
        5C98C120 coffgrp      390 000176BC    15EBC

    SECTION HEADER #4
       .data name
        15A8 virtual size
       1C000 virtual address (000000001251C000 to 000000001251D5A7)
         E00 size of raw data
       19C00 file pointer to raw data (00019C00 to 0001A9FF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    C0000040 flags
             Initialized Data
             Read Write

    SECTION HEADER #5
      .pdata name
         9C0 virtual size
       1E000 virtual address (000000001251E000 to 000000001251E9BF)
         A00 size of raw data
       1AA00 file pointer to raw data (0001AA00 to 0001B3FF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    40000040 flags
             Initialized Data
             Read Only

    SECTION HEADER #6
      .gfids name
          3C virtual size
       1F000 virtual address (000000001251F000 to 000000001251F03B)
         200 size of raw data
       1B400 file pointer to raw data (0001B400 to 0001B5FF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    40000040 flags
             Initialized Data
             Read Only

    SECTION HEADER #7
        .tls name
           9 virtual size
       20000 virtual address (0000000012520000 to 0000000012520008)
         200 size of raw data
       1B600 file pointer to raw data (0001B600 to 0001B7FF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    C0000040 flags
             Initialized Data
             Read Write

    SECTION HEADER #8
       .rsrc name
         5D0 virtual size
       21000 virtual address (0000000012521000 to 00000000125215CF)
         600 size of raw data
       1B800 file pointer to raw data (0001B800 to 0001BDFF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    40000040 flags
             Initialized Data
             Read Only

    SECTION HEADER #9
      .reloc name
        1374 virtual size
       22000 virtual address (0000000012522000 to 0000000012523373)
        1400 size of raw data
       1BE00 file pointer to raw data (0001BE00 to 0001D1FF)
           0 file pointer to relocation table
           0 file pointer to line numbers
           0 number of relocations
           0 number of line numbers
    42000040 flags
             Initialized Data
             Discardable
             Read Only

      Summary

            2000 .data
            1000 .gfids
            1000 .orpc
            1000 .pdata
           14000 .rdata
            2000 .reloc
            1000 .rsrc
            6000 .text
            1000 .tls

    D:\Home\Atiras\V77Ma_64Bit_Branch001\Bin\Release



     
    Dienstag, 26. März 2019 12:02
  • Die DLL, die Du registrieren möchtest, muss in 64 Bit vorliegen, da ein 64 Bit Prozess keine Funktionen in 32 Bit DLLs aufrufen kann . Mit regsvr32 kannst Du Dich einigermaßen entspannen, da wird automatisch die richtige Version genommen (32 oder eben 64 Bit).

    In der Registry sind die COMponenten jedenfalls unter HKCR\CLSID (64 Bit) oder HKCR\Wow6432Node\CLSID (32 Bit) registriert. Aber wie gesagt, prüfe zunächst die zu registrierende DLL.

     Das mit dem 64 Bit ist gejklärt aber gibt es eine beschreibug welche Key unetr  HKCR\CLSID  gebraucht werden ?

    Donnerstag, 28. März 2019 06:52
  • Ja, da gibt es natürlich was: COM Registry Keys

    Was genau du davon alles benötigst, hängt von Deinem CoCreateInstance Aufruf ab (CLSID oder ProgID?, CLXTX?, usw.)


    Sonntag, 31. März 2019 07:54