DCMTK 3.6.2 (bibliothèque de prise en charge MD) et construction de l'environnement de développement Microsoft Visual Studio 2017
- Bibliothèque de prise en charge DCMTK 362MD 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
- Décompressez le package de code source DCMTK téléchargé et le package de bibliothèque de support
- Ouvrez CMake pour sélectionner le chemin du code source et le chemin du code à générer
- 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
- 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 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: - 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):
- Dans la configuration, cochez tous les éléments du chemin configuré et décochez DCMTK_OVERWRITE_WIN32_COMPILER_FLAGS (très critique) .
- À 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. .
- À 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
- (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.cmake
fichier et recherchez le texte intégralopenssl
. Vous constaterez que ce paragraphe fait référence à deux noms de fichiers inexistantsdcmtkeay.dll
etdcmtkssl.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.dll
et./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. - Utilisez les droits d' administrateur pour ouvrir la solution de projet DCMTK obtenue (DCMTK.sln) avec Visual Studio
- Dans la barre de menus, sélectionnez Générer (B) -> Génération par lots (T) ...
- 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.
Les faits ont prouvé que cette étape prendrait beaucoup de temps (invasion et suppression du réseau de transfert d'images) - Lorsque vous recevez une invite similaire à celle-ci, cela signifie que cette étape est terminée
- 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.
- 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
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!