Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357

    [C#] utilizzo dll in Windows Service

    Buongiorno!

    Sto scrivendo un servizio di windows (con VS2005 C#) che utilizza una dll scritta in c++ per gestire il colloquio con un dispositivo remoto.

    Per utilizzare le funzioni all'interno della dll le 'mappo' con DllImport (System.Runtime.InteropServices).

    Il servizio parte ma si blocca non appena incontra la prima chiamata ad una funzione della dll.

    Questo problema non si presenta se invece di creare un progetto "Windows Service" ne creo uno "Windows Application".

    Qualche idea?

  2. #2
    Sotto che credenziali viene eseguito il servizio? La dll in questione che cosa fa esattamente? Deve accedere all'hardware? Alla rete? Fare operazioni privilegiate?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    Ciao!

    il servizio l'ho installo con queste credenziali (non so se questa risposta risponde alla tua domanda...):

    codice:
                this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem;

    La dll è una libreria di funzioni per utilizzare il protocollo di comunicazione via rete di questo dispositivo remoto. La prima funzione che richiamo (.create()) è semplicemente la creazione di un oggetto che poi connetterò al dispositivo. Quando richiamo questa funzione, il servizio non risponde più e non dà neanche messaggi di errore.

    In un primo momento il servizio non si avviava dando una eccezione che indicava la dll non trovata. Poi ho scoperto che il problema erano le dipendenze. Aggiunte queste ultime non ho più l'eccezione, il servizio parte (posso stampare dei msg di log nell'event viewer), ma rimane piantato al primo accesso alla dll.

  4. #4
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    La dll è stata creata con Borland C++ e dipende da altre dll e da file con estensione bpl che ho incluso tutti nella cartella di installazione.

  5. #5
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    Quello di seguito è il contenuto della cartella di installazione del servizio. Codenet.dll è la libreria di funzioni utilizzata dal servizio. Gli altri file le dipendenze. Il servizio l'ho installato aggiungendo un Setup Project alla soluzione.

    codice:
    2014-02-12  12:40            24,576 service.exe
    2014-02-12  12:45             5,012 service.InstallState
    
    2010-02-04  09:03         1,025,024 Codenet.dll
    
    2000-01-31  04:00            25,600 borlndmm.dll
    2000-01-31  04:00         1,496,064 cc3250mt.dll
    2006-03-03  09:02           658,432 cc3270mt.dll
    2005-09-12  08:20            29,184 pthreadBC.dll
    
    2006-03-03  10:02           287,744 dbrtl100.bpl
    2005-11-14  19:00         1,074,688 indy100.bpl
    2005-11-14  19:00           294,912 IndyCore100.bpl
    2005-11-14  19:00         1,764,352 IndyProtocols100.bpl
    2005-11-14  19:00           130,560 IndySystem100.bpl
    2006-03-03  09:02           843,264 rtl100.bpl
    2006-03-03  09:02         1,680,896 vcl100.bpl
    2005-11-14  19:00           198,656 vclx100.bpl

    qualche idea?

  6. #6
    Utente di HTML.it L'avatar di ganesha
    Registrato dal
    Jan 2003
    Messaggi
    357
    up

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.