DCMTK 3.6.2 (bibliothèque de prise en charge MD) et construction de l'environnement de développement Microsoft Visual Studio 2017

DCMTK 3.6.2 (bibliothèque de prise en charge MD) et construction de l'environnement de développement Microsoft Visual Studio 2017

 

 

Ecrire devant

Le récent travail de classe est entré en contact avec quelques développements sur le format d'image médicale Dicom.Après près d'un semestre d'apprentissage acharné, j'enregistre enfin quelques problèmes rencontrés dans le processus ici.

Dans le processus d'apprentissage, la plupart des informations trouvées sur Internet concernent la préparation de l'installation de DCMTK 3.6.0, et la plupart d'entre elles sont obsolètes et les informations efficaces sont dispersées, donc cet article enregistre d'abord brièvement l'environnement de développement de DCMTK 3.6.2 Préparez-vous pour les besoins futurs.


Préparation des connaissances

DCMTK

DCMTK est un projet open source fourni par la société allemande offis . Il est implémenté en C ++. Après plus de dix ans de développement et de maintenance, il a essentiellement réalisé tout le contenu du protocole Dicom, et fourni tous les codes sources, bibliothèques de support et documents d'aide. Le meilleur choix pour ce projet de cours.

MT ou MD?

L'auteur Liu Beifeng'er mentionné dans un blog post à propos dcmtk 3.6.0 compilation

Réserve de connaissances de MD / MT:

/ MT et / MTd indiquent la version statique de la bibliothèque CRT multithread. Cette option intégrera entièrement la bibliothèque d'exécution en tant que bibliothèque statique au moment de la compilation. Le fichier exécutable généré par cette option ne nécessite pas la participation de la DLL de la bibliothèque d'exécution lors de l'exécution et obtiendra une légère amélioration des performances, mais le code binaire résultant devient très gonflé en raison de l'implémentation énorme de la bibliothèque d'exécution. Lorsqu'un projet est incorporé dans plusieurs projets sous la forme d'une bibliothèque de liens statiques, il peut provoquer plusieurs copies de la gestion de la mémoire de la bibliothèque d'exécution, ce qui aboutira finalement au problème fatal «Adresse non valide spécifiée à RtlValidateHeap». En outre, les options / MT et / MTd ne sont plus prises en charge dans le C ++ et la CLI gérés.

/ MD et / MDd indiquent que la version dll dynamique de la bibliothèque CRT multithread est utilisée, ce qui obligera l'application à utiliser la version spécifique de la DLL multithread de la bibliothèque d'exécution. Lors de la liaison, la bibliothèque d'importation MSVCRT.lib de la bibliothèque d'exécution MSVCRxx.DLL sera liée selon la méthode traditionnelle VC link dll. Lors de l'exécution, la version correspondante du package de composants redistribuables de la bibliothèque d'exécution VC sera installée (bien sûr, ces bibliothèques d'exécution La dll peut également être placée dans le répertoire de l'application).

Étant donné que les méthodes / MD et / MDd ne lieront pas la bibliothèque d'exécution dans le fichier exécutable, cela peut réduire efficacement la taille du fichier exécutable. Lorsque plusieurs projets sont exploités en mode MD, le même tas sera utilisé en interne, la gestion de la mémoire sera simplifiée et les problèmes de gestion de la mémoire inter-modules pourront également être atténués.

Conclusion: / MD et / MDd seront la tendance, les méthodes / ML et / MLd s'il vous plaît abandonner à temps, / MT et / MTd ne doivent pas être utilisés quand ce n'est pas nécessaire.


Télécharger des logiciels

Code source DCMTK et version correspondante de la bibliothèque de prise en charge MD

Le code source DCMTK3.6.2 et les exécutables compilés peuvent être complétés sur son site officiel en téléchargement direct. 
Il est à noter que lors du téléchargement de la bibliothèque de support MD, vous devez sélectionner correctement la version du système d'exploitation et la version de Visual Studio correspondantes. Ici, nous choisissons de télécharger: 
dcmtk-3.6.2-win64-support_MD-msvc-15.0.zip Bibliothèques 
pré-compilées pour Visual Studio 2017 (MSVC 15.0), 64 bits, avec option «MD»

CMake

Cmake est requis pour générer le code source DCMTK. Le choix de la version de CMake n'est peut-être pas si particulier, cette fois j'ai directement choisi la dernière version stable 3.10.0 qui peut être téléchargée, mais en théorie une version mise à jour est également envisageable. 
Je dois encore dire quelque chose, le code source de CMake est inutile dans ce projet. Lors du téléchargement , veuillez sélectionner Distributions binaires à télécharger, et également sélectionner la version du système d'exploitation correspondant à télécharger.


Officiellement commencé

Utilisez CMake pour générer des fichiers de projet DCMTK

  1. Décompressez le package de code source DCMTK téléchargé et le package de bibliothèque de support
  2. Ouvrez CMake pour sélectionner le chemin du code source et le chemin du code à générer
  3. Cliquez sur Configurer dans le coin inférieur gauche, sélectionnez la version MS correspondante dans la boîte de dialogue contextuelle, puis sur Terminer pour confirmer 
    paramètres du projet cmake
  4. La fin de la commande peut prendre du temps. La première fois que vous devez vérifier beaucoup de choses, la liste devrait être tellement rouge après l'exécution. 
    la liste cmake est rouge
  5. La boîte jaune dans la figure ci-dessus est l'endroit où la bibliothèque de support que nous venons de télécharger doit être installée. CMake ne reconnaît pas automatiquement le chemin, nous devons le définir manuellement. 
    La structure des répertoires de la bibliothèque de support téléchargée est la suivante: 
    Structure de répertoire de bibliothèque de soutien
  6. Après avoir défini tous ces chemins de bibliothèque de support, cela devrait être comme indiqué dans la figure suivante (chaque personne prend en charge le chemin de placement d'inventaire est différent, le chemin dans la figure est pour référence seulement, le chemin réel prévaudra): 
    La bibliothèque de support est configurée
  7. Dans la configuration, cochez tous les éléments du chemin configuré et décochez DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS (très critique)
    Écrivez la description de l'image ici
  8. À ce stade, cliquez à nouveau sur Configurer. Après une brève lecture, la liste devrait devenir blanche. Vérifiez si les modifications que vous avez apportées auparavant sont toujours conservées. Si le chemin et les cases à cocher sont toujours conservés, les paramètres ont été correctement définis. Cliquez sur Générer pour générer le fichier de projet. . 
    Conservez les modifications, cliquez sur générer
  9. À ce stade, le travail sur CMake est terminé et CMake peut être fermé pour les opérations suivantes.

Ouvrez le fichier de projet DCMTK obtenu pour la génération par lots

  1. (Très important) Etant donné qu'un nom de fichier incorrect est cité dans le fichier de configuration de projet généré par CMake, le fichier de projet généré doit être modifié: ouvrez le répertoire du projet DCMTK, ouvrez et modifiez le ./dcmnet/apps/cmake_install.cmakefichier et recherchez le texte intégral openssl. Vous constaterez que ce paragraphe fait référence à deux noms de fichiers inexistants dcmtkeay.dllet dcmtkssl.dll, respectivement, les modifiez dans la bibliothèque de support précédemment téléchargée 
    ./openssl-1.1.0f/bin/dcmtkcrypto_d-1_1-x64.dllet 
    ./openssl-1.1.0f/bin/dcmtkssl_d-1_1-x64.dll 
    vous pouvez (Version Release sélectionner le fichier sans le suffixe _d à modifier), enregistrer et fermer après modification.
  2. Utilisez les droits d' administrateur pour ouvrir la solution de projet DCMTK obtenue (DCMTK.sln) avec Visual Studio
  3. Dans la barre de menus, sélectionnez Générer (B) -> Génération par lots (T) ...
  4. Dans la boîte de dialogue contextuelle, vérifiez le projet ALL_BUILD de la configuration de débogage (pour générer le fichier de version Release, sélectionnez la configuration Release ici et dans les étapes suivantes), puis cliquez sur Générer. 
    produire
    Les faits ont prouvé que cette étape prendrait beaucoup de temps (invasion et suppression du réseau de transfert d'images) 
    bande dessinée
  5. Lorsque vous recevez une invite similaire à celle-ci, cela signifie que cette étape est terminée 
    95 succès
  6. Répétez l'étape 3, mais vérifiez un autre projet INSTALL sous la configuration de débogage (sélectionnez Libérer dans l'environnement de version), puis cliquez sur Générer. 
    Générer INSTALL
  7. S'il n'y a pas d'erreur, félicitations, DCMTK 3.6.2 a été compilé avec succès,

Rédiger des exemples de programmes pour les tests

Paramètres du projet

Créez un nouveau projet vide VC ++, définissez la configuration de la solution de projet sur débogage, la plate-forme de solution est x64 et ajoutez le fichier source main.cpp.

Entrez dans le projet de la barre de menus (P) -> Propriété YOUR_PROJECT_NAME_ (notez que la modification est la configuration x64 en cours de débogage, si vous passez à la version, vous devez la réinitialiser à la configuration sous le schéma de version).

C / C ++ -> Général sur la gauche, et un répertoire d'inclusion supplémentaire sur la droite, défini sur 
C:\Program Files\DCMTK\include(emplacement par défaut).

Éditeur de liens à gauche -> Général, répertoire de bibliothèque supplémentaire à droite, défini sur 
C:\Program Files\DCMTK\lib 
你下载并解压的支持库目录\zlib-1.2.11\lib

Éditeur de liens à gauche -> entrée, dépendances supplémentaires à droite, défini sur 
Iphlpapi.lib 
ws2_32.lib 
wsock32.lib 
netapi32.lib 
ofstd.lib 
oflog.lib 
dcmdata.lib 
dcmdsig.lib 
dcmnet.lib 
dcmsr.lib 
dcmimgle.lib 
dcmqrdb.lib 
dcmtls.lib 
dcmwlm.lib 
dcmpstat.lib 
dcmjpls.lib 
dcmjpeg.lib 
dcmimage.lib 
charls.lib 
ijg8.lib 
ijg12.lib 
ijg16.lib 
i2d.lib 
zlib_d.lib(Release版本删除_d) 

Attachez un graphe de dépendances de lib, vous n'avez pas besoin de tous les ajouter lorsque vous rencontrez des problèmes spécifiques plus tard, sélectionnez simplement ce dont vous avez besoin et ses dépendances 
dcmlibs

Exemple de code

//filename: main.cpp
#include "dcmtk\config\osconfig.h"
#include "dcmtk\dcmdata\dctk.h"
#include <iostream>

void main() {
    DcmFileFormat *myFileFormat = new DcmFileFormat;
    OFCondition cond = myFileFormat->loadFile("c:/111.dcm");
    if (cond.good()){
        OFString patientName;
        if (myFileFormat->getDataset()->findAndGetOFString(DCM_PatientName, patientName).good()) 
            std::cout << "Patient Name: " << patientName << "\nTest successed.\n";
        else std::cout << "No Patient Name Data!\n";
    }
    else std::cout << "Error occurs when opening file, check path or filename.\n";
    system("pause");
}

Enfin, attachez l'image au format dicom utilisée dans le test. Extraire le mot de passe: cw3q

Si le paramètre Nom du patient peut être affiché correctement, félicitations, la bibliothèque DCMTK a été correctement installée et vous pouvez passer au travail de développement suivant!

Je suppose que tu aimes

Origine blog.csdn.net/a8039974/article/details/108341548
conseillé
Classement