Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. 3rd Party Software
  4. C1075 error reading tlh file
Forum Updated to NodeBB v4.3 + New Features

C1075 error reading tlh file

Scheduled Pinned Locked Moved Unsolved 3rd Party Software
9 Posts 2 Posters 1.6k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Mike10
    wrote on last edited by Mike10
    #1

    Hi,

    I am trying to access a c# dll from QT using COM. I am able to do this no problem in C++ in visual studio, when I add the same code to QT i get an error when building:

    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\comdef.h:56: error: C1075: end of file found before the left brace '{' at 'c:\users\mypath\myfile.tlh(19)' was matched

    The generated tlh file using QT (with VC++ Compiler 12) appears identical to the tlh file generated by visual studio and there certainly doesn't appear to be a missing brace.

    Unfortunately I am unable to use any compiler other than VC++ Compiler 12 (2013) do to restrictions placed on me by some 3rd party software (Siemens WinCC OA).

    The import line is:
    #import "C:\Users\mypath\myfile.tlb" raw_interfaces_only

    Any suggestions?

    tlh file contents follow:

    // Created by Microsoft (R) C/C++ Compiler Version 12.00.40629.0 (e9f66a42).
    //
    // c:\users\mypath\myclass.tlh
    //
    // C++ source equivalent of Win32 type library C:\Users\mypath\Myclass.tlb
    // compiler-generated file created 02/11/20 at 10:33:06 - DO NOT EDIT!
    
    //
    // Cross-referenced type libraries:
    //
    //  #import "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.tlb"
    //
    
    #pragma once
    #pragma pack(push, 8)
    
    #include <comdef.h>
    
    namespace MyClass {
    
    //
    // Forward references and typedefs
    //
    
    struct __declspec(uuid("7cd620e2-86e5-4de1-95b8-9319b9d4e4d9"))
    /* LIBID */ __MyClass;
    struct /* coclass */ TheClass;
    struct __declspec(uuid("0e01bd9c-c1c5-3f60-9ae2-fd5ddfcdb7ae"))
    /* dual interface */ _TheClass;
    
    //
    // Smart pointer typedef declarations
    //
    
    _COM_SMARTPTR_TYPEDEF(_TheClass, __uuidof(_TheClass));
    
    //
    // Type library items
    //
    
    struct __declspec(uuid("7dee8be0-f9db-4c27-b407-463a9d67aea6"))
    TheClass;
        // [ default ] interface _TheClass
        // interface _Object
    
    struct __declspec(uuid("0e01bd9c-c1c5-3f60-9ae2-fd5ddfcdb7ae"))
    _TheClass : IDispatch
    {
        //
        // Raw methods provided by interface
        //
    
          virtual HRESULT __stdcall get_ToString (
            /*[out,retval]*/ BSTR * pRetVal ) = 0;
          virtual HRESULT __stdcall Equals (
            /*[in]*/ VARIANT obj,
            /*[out,retval]*/ VARIANT_BOOL * pRetVal ) = 0;
          virtual HRESULT __stdcall GetHashCode (
            /*[out,retval]*/ long * pRetVal ) = 0;
          virtual HRESULT __stdcall GetType (
            /*[out,retval]*/ struct _Type * * pRetVal ) = 0;
          virtual HRESULT __stdcall GetTheThing (
            /*[in]*/ BSTR arg,
            /*[out,retval]*/ BSTR * pRetVal ) = 0;
    };
    
    } // namespace MyClass
    
    #pragma pack(pop)
    
    aha_1980A 1 Reply Last reply
    0
    • M Mike10

      Hi,

      I am trying to access a c# dll from QT using COM. I am able to do this no problem in C++ in visual studio, when I add the same code to QT i get an error when building:

      C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\comdef.h:56: error: C1075: end of file found before the left brace '{' at 'c:\users\mypath\myfile.tlh(19)' was matched

      The generated tlh file using QT (with VC++ Compiler 12) appears identical to the tlh file generated by visual studio and there certainly doesn't appear to be a missing brace.

      Unfortunately I am unable to use any compiler other than VC++ Compiler 12 (2013) do to restrictions placed on me by some 3rd party software (Siemens WinCC OA).

      The import line is:
      #import "C:\Users\mypath\myfile.tlb" raw_interfaces_only

      Any suggestions?

      tlh file contents follow:

      // Created by Microsoft (R) C/C++ Compiler Version 12.00.40629.0 (e9f66a42).
      //
      // c:\users\mypath\myclass.tlh
      //
      // C++ source equivalent of Win32 type library C:\Users\mypath\Myclass.tlb
      // compiler-generated file created 02/11/20 at 10:33:06 - DO NOT EDIT!
      
      //
      // Cross-referenced type libraries:
      //
      //  #import "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\mscorlib.tlb"
      //
      
      #pragma once
      #pragma pack(push, 8)
      
      #include <comdef.h>
      
      namespace MyClass {
      
      //
      // Forward references and typedefs
      //
      
      struct __declspec(uuid("7cd620e2-86e5-4de1-95b8-9319b9d4e4d9"))
      /* LIBID */ __MyClass;
      struct /* coclass */ TheClass;
      struct __declspec(uuid("0e01bd9c-c1c5-3f60-9ae2-fd5ddfcdb7ae"))
      /* dual interface */ _TheClass;
      
      //
      // Smart pointer typedef declarations
      //
      
      _COM_SMARTPTR_TYPEDEF(_TheClass, __uuidof(_TheClass));
      
      //
      // Type library items
      //
      
      struct __declspec(uuid("7dee8be0-f9db-4c27-b407-463a9d67aea6"))
      TheClass;
          // [ default ] interface _TheClass
          // interface _Object
      
      struct __declspec(uuid("0e01bd9c-c1c5-3f60-9ae2-fd5ddfcdb7ae"))
      _TheClass : IDispatch
      {
          //
          // Raw methods provided by interface
          //
      
            virtual HRESULT __stdcall get_ToString (
              /*[out,retval]*/ BSTR * pRetVal ) = 0;
            virtual HRESULT __stdcall Equals (
              /*[in]*/ VARIANT obj,
              /*[out,retval]*/ VARIANT_BOOL * pRetVal ) = 0;
            virtual HRESULT __stdcall GetHashCode (
              /*[out,retval]*/ long * pRetVal ) = 0;
            virtual HRESULT __stdcall GetType (
              /*[out,retval]*/ struct _Type * * pRetVal ) = 0;
            virtual HRESULT __stdcall GetTheThing (
              /*[in]*/ BSTR arg,
              /*[out,retval]*/ BSTR * pRetVal ) = 0;
      };
      
      } // namespace MyClass
      
      #pragma pack(pop)
      
      aha_1980A Offline
      aha_1980A Offline
      aha_1980
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi @Mike10,

      it should not matter if you use the same MSVC compiler from within Visual Studio or Qt Creator, as long as the compiler options are equal. Do note that qmake does set some options by default (like UNICODE) that might lead to different results than in Visual Studio.

      So can you show your .pro file and the compiler call from Compile Output that leads to the given error message?

      Regards

      Qt has to stay free or it will die.

      M 1 Reply Last reply
      0
      • aha_1980A aha_1980

        Hi @Mike10,

        it should not matter if you use the same MSVC compiler from within Visual Studio or Qt Creator, as long as the compiler options are equal. Do note that qmake does set some options by default (like UNICODE) that might lead to different results than in Visual Studio.

        So can you show your .pro file and the compiler call from Compile Output that leads to the given error message?

        Regards

        M Offline
        M Offline
        Mike10
        wrote on last edited by
        #3

        @aha_1980

        Hi,

        Thanks for the reply.

        Pro file contents:

        
        QT       += core gui
        
        greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
        
        TARGET = csharp_import
        TEMPLATE = app
        
        
        SOURCES += main.cpp\
                mainwindow.cpp
        
        HEADERS  += mainwindow.h
        
        FORMS    += mainwindow.ui
        
        
        
        

        cpp file:

        #include "mainwindow.h"
        #include "ui_mainwindow.h"
        #import "C:\Users\mypath\Myclass.tlb" raw_interfaces_only
        
        MainWindow::MainWindow(QWidget *parent) :
            QMainWindow(parent),
        
        
            ui(new Ui::MainWindow)
        {
        
            CoInitialize(0); // Init COM
            BSTR thing_to_send = ::SysAllocString(L"My thing, or ... ");
            BSTR returned_thing;
            MyClass::_TheClassPtr obj(__uuidof(MyClass::TheClass));
            HRESULT hResult = obj->GetTheThing(thing_to_send, &returned_thing);
        
        
        
            ui->setupUi(this);
        }
        
        MainWindow::~MainWindow()
        {
            delete ui;
        
        }
        
        

        Compiler output:

        11:13:15: Configuration unchanged, skipping qmake step.
        11:13:15: Starting: "C:\Qt\Qt5.5.1\Tools\QtCreator\bin\jom.exe" 
        	C:\Qt\Qt5.5.1\Tools\QtCreator\bin\jom.exe -f Makefile.Debug
        	cl -c -nologo -FS -Zi -MDd -GR -W3 -w34100 -w34189 -w44996 -EHsc /Fddebug\csharp_import.pdb -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQ_BYTE_ORDER=Q_LITTLE_ENDIAN -DQT_NO_PRINTER -DQT_NO_PRINTDIALOG -DWINAPI_FAMILY=WINAPI_FAMILY_APP -DX64 -D__X64__ -D__x64__ -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -I..\csharp_import -I. -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\include -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\include\QtWidgets -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\include\QtGui -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\include\QtANGLE -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\include\QtCore -Idebug -I. -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\mkspecs\winrt-x64-msvc2013 -Fodebug\ @C:\Users\mypath\AppData\Local\Temp\mainwindow.obj.16568.0.jom
        mainwindow.cpp
        C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\comdef.h(56) : fatal error C1075: end of file found before the left brace '{' at 'c:\users\mypath\build-csharp_import-qt_5_5_1_for_windows_runtime_64bit-debug\debug\myclass.tlh(19)' was matched
        jom: C:\Users\mypath\build-csharp_import-Qt_5_5_1_for_Windows_Runtime_64bit-Debug\Makefile.Debug [debug\mainwindow.obj] Error 2
        jom: C:\Users\mypath\build-csharp_import-Qt_5_5_1_for_Windows_Runtime_64bit-Debug\Makefile [debug] Error 2
        11:13:17: The process "C:\Qt\Qt5.5.1\Tools\QtCreator\bin\jom.exe" exited with code 2.
        Error while building/deploying project csharp_import (kit: Qt 5.5.1 for Windows Runtime 64bit)
        When executing step "Make"
        11:13:17: Elapsed time: 00:02.
        
        aha_1980A 1 Reply Last reply
        0
        • M Mike10

          @aha_1980

          Hi,

          Thanks for the reply.

          Pro file contents:

          
          QT       += core gui
          
          greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
          
          TARGET = csharp_import
          TEMPLATE = app
          
          
          SOURCES += main.cpp\
                  mainwindow.cpp
          
          HEADERS  += mainwindow.h
          
          FORMS    += mainwindow.ui
          
          
          
          

          cpp file:

          #include "mainwindow.h"
          #include "ui_mainwindow.h"
          #import "C:\Users\mypath\Myclass.tlb" raw_interfaces_only
          
          MainWindow::MainWindow(QWidget *parent) :
              QMainWindow(parent),
          
          
              ui(new Ui::MainWindow)
          {
          
              CoInitialize(0); // Init COM
              BSTR thing_to_send = ::SysAllocString(L"My thing, or ... ");
              BSTR returned_thing;
              MyClass::_TheClassPtr obj(__uuidof(MyClass::TheClass));
              HRESULT hResult = obj->GetTheThing(thing_to_send, &returned_thing);
          
          
          
              ui->setupUi(this);
          }
          
          MainWindow::~MainWindow()
          {
              delete ui;
          
          }
          
          

          Compiler output:

          11:13:15: Configuration unchanged, skipping qmake step.
          11:13:15: Starting: "C:\Qt\Qt5.5.1\Tools\QtCreator\bin\jom.exe" 
          	C:\Qt\Qt5.5.1\Tools\QtCreator\bin\jom.exe -f Makefile.Debug
          	cl -c -nologo -FS -Zi -MDd -GR -W3 -w34100 -w34189 -w44996 -EHsc /Fddebug\csharp_import.pdb -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DQ_BYTE_ORDER=Q_LITTLE_ENDIAN -DQT_NO_PRINTER -DQT_NO_PRINTDIALOG -DWINAPI_FAMILY=WINAPI_FAMILY_APP -DX64 -D__X64__ -D__x64__ -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_OPENGL_ES_2 -DQT_OPENGL_ES_2_ANGLE -I..\csharp_import -I. -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\include -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\include\QtWidgets -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\include\QtGui -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\include\QtANGLE -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\include\QtCore -Idebug -I. -I..\..\..\..\Qt\Qt5.5.1\5.5\winrt_x64\mkspecs\winrt-x64-msvc2013 -Fodebug\ @C:\Users\mypath\AppData\Local\Temp\mainwindow.obj.16568.0.jom
          mainwindow.cpp
          C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\comdef.h(56) : fatal error C1075: end of file found before the left brace '{' at 'c:\users\mypath\build-csharp_import-qt_5_5_1_for_windows_runtime_64bit-debug\debug\myclass.tlh(19)' was matched
          jom: C:\Users\mypath\build-csharp_import-Qt_5_5_1_for_Windows_Runtime_64bit-Debug\Makefile.Debug [debug\mainwindow.obj] Error 2
          jom: C:\Users\mypath\build-csharp_import-Qt_5_5_1_for_Windows_Runtime_64bit-Debug\Makefile [debug] Error 2
          11:13:17: The process "C:\Qt\Qt5.5.1\Tools\QtCreator\bin\jom.exe" exited with code 2.
          Error while building/deploying project csharp_import (kit: Qt 5.5.1 for Windows Runtime 64bit)
          When executing step "Make"
          11:13:17: Elapsed time: 00:02.
          
          aha_1980A Offline
          aha_1980A Offline
          aha_1980
          Lifetime Qt Champion
          wrote on last edited by
          #4

          Hi @Mike10,

          1. It seems you build for Windows RT, is that wanted/correct?
          2. I'd try to place the import in a file that does not include QObject and co. itself. Does it work then?

          Regards

          Qt has to stay free or it will die.

          1 Reply Last reply
          0
          • M Offline
            M Offline
            Mike10
            wrote on last edited by
            #5

            1)Yes I want to build for windows
            2) No - this made no difference

            Thanks

            aha_1980A 1 Reply Last reply
            0
            • M Mike10

              1)Yes I want to build for windows
              2) No - this made no difference

              Thanks

              aha_1980A Offline
              aha_1980A Offline
              aha_1980
              Lifetime Qt Champion
              wrote on last edited by
              #6

              Hi @Mike10,

              Windows RT != Windows.

              Do you want to build classic Windows API apps or Windows RT = UWP apps?

              Regards

              Qt has to stay free or it will die.

              1 Reply Last reply
              2
              • M Offline
                M Offline
                Mike10
                wrote on last edited by Mike10
                #7

                The kits I have are:
                Qt 5.5.1 for windows phone arm MSVC2013 32bit
                Qt 5.5.1 for windows phone x86 MSVC2013 32bit (Emulator)
                Qt 5.5.1 for windows runtime 64bit

                So I chose the last of those.

                I actually want to make a dll for integration with WinCC OA that will also link to a C# library. The first part of this works and I can build a dll that works as a WinCC OA plugin, I am struggling with the 2nd part so created a new project with same settings as the working WinCC OA project.

                aha_1980A 1 Reply Last reply
                0
                • M Mike10

                  The kits I have are:
                  Qt 5.5.1 for windows phone arm MSVC2013 32bit
                  Qt 5.5.1 for windows phone x86 MSVC2013 32bit (Emulator)
                  Qt 5.5.1 for windows runtime 64bit

                  So I chose the last of those.

                  I actually want to make a dll for integration with WinCC OA that will also link to a C# library. The first part of this works and I can build a dll that works as a WinCC OA plugin, I am struggling with the 2nd part so created a new project with same settings as the working WinCC OA project.

                  aha_1980A Offline
                  aha_1980A Offline
                  aha_1980
                  Lifetime Qt Champion
                  wrote on last edited by
                  #8

                  Hi @Mike10

                  none of them are real Windows kits. I'd try to install a Qt MSVC xxxx version (without UWP resp. RT in it).

                  If you are not tied to the old Qt versions and compilers, I'd even use a newer one.

                  Regards

                  Qt has to stay free or it will die.

                  M 1 Reply Last reply
                  1
                  • aha_1980A aha_1980

                    Hi @Mike10

                    none of them are real Windows kits. I'd try to install a Qt MSVC xxxx version (without UWP resp. RT in it).

                    If you are not tied to the old Qt versions and compilers, I'd even use a newer one.

                    Regards

                    M Offline
                    M Offline
                    Mike10
                    wrote on last edited by
                    #9

                    @aha_1980

                    Unfortunately WinCC OA 3.15 requires no later than QT 5.5.1, MSVC 2013 and Win 64bit

                    I have downloaded a different file from https://download.qt.io/archive/qt/5.5/5.5.1/ and that does indeed seem to have resolved the compilation issue :)

                    I am now getting an error at runtime but could be something daft so I will look into more.

                    Thanks

                    1 Reply Last reply
                    2

                    • Login

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Search
                    • Get Qt Extensions
                    • Unsolved