Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826

    errore C1189: #error : <mutex> is not supported when compiling with /clr or /clr:pure e cli

    ciao.
    Sto cercando di creare un wrapper attorno ad una libreria grafica nativa c++ 11 con c++ cli.
    IL problema è che quando includo un file .h che ha come include <mutex> o <thread> mi da quest errore:
    codice:
    Errore	2	error C1189: #error :  <mutex> is not supported when compiling with /clr or /clr:pure.	C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\mutex	9	1	VertexTextures
    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2003
    Messaggi
    4,826
    Quote Originariamente inviata da giuseppe500 Visualizza il messaggio
    ciao.
    Sto cercando di creare un wrapper attorno ad una libreria grafica nativa c++ 11 con c++ cli.
    IL problema è che quando includo un file .h che ha come include <mutex> o <thread> mi da quest errore:
    codice:
    Errore    2    error C1189: #error :  <mutex> is not supported when compiling with /clr or /clr:pure.    C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\mutex    9    1    VertexTextures
    grazie
    ho letto tante risposte tipo queste:
    It is illegal to use in managed code, the CLR does not provide the guarantee that a managed thread runs on a dedicated operating system thread. Two threads can technically share the same OS thread, making the mutex fail miserably. In practice, that's quite unlikely to happen, there are no known CLR hosts that implement this feature. No guarantee that there are unknown ones of course. The only way to sail around the compile error is to wrap the native code in a C++ source file that's compiled without /clr in effect so your C++/CLI code never sees the mutex.Hans PassantOct 27 '14 at 11:36

    ma non riesco a capire come fare un wrapper nel file c++ non includendo il mutex, alla fine c'è sempre un .h da includere e quello se uso funzioni membro di tipo mutex deve includere il <mutex> o non ho capito qualcosa?
    la logica sarebbe di inserire il .h col mutex nel .cpp e togliergli il clr (solo al file .cpp) ma poi per le funzioni membro? devo usare qualcosa tipo pimpl?
    come si fa?
    grazie infinite.

  3. #3
    la logica sarebbe di inserire il .h col mutex nel .cpp e togliergli il clr (solo al file .cpp) ma poi per le funzioni membro? devo usare qualcosa tipo pimpl?
    L'idea è di quel tipo. D'altra parte, se riesci a far sparire il mutex dall'interfaccia pubblica, te la potresti cavare semplicemente compilando giusto il .cpp di implementazione senza /clr (anche se non so se rischiano di sorgere casini di compatibilità binaria tra file compilati con /clr e senza).
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.