Visual Studio 2019 建立 DLL 動態連結函式庫教學與範例

介紹如何使用 Visual Studio 2019 將自己撰寫的 C++ 程式編譯成 DLL 動態連結函式庫。 建立 DLL 動態連結函式庫 Step 1 開啟 Visual Studio 2019,點選「建立新的專案」。 Step 2 ...

November 7, 2020 · G. T. Wang

ITK 使用 BinaryMask3DMeshSource 將二元影像轉為 Surface 教學與範例

介紹如何使用 ITK 的 BinaryMask3DMeshSource 將二元影像(binary image)轉為網格(mesh)構成的 surface。 相關文章: ITK 使用 TriangleMeshToBinaryImageFilter 將 Surface 轉為二元影像教學與範例 VTK 使用 vtkDiscreteMarchingCubes 將二元遮罩影像轉為 Mesh 網格教學與範例 ...

November 4, 2020 · G. T. Wang

POCO 多功能 C++ 函式庫使用教學與範例

介紹如何在 Ubuntu Linux 中安裝與使用 POCO C++ 函式庫。 POCO 是一套多功能的跨平台 C++ 函式庫,可用於開發各類型平台上的網路相關應用程式,以下是在 Ubuntu Linux 中安裝 POCO 函式庫的方式與使用範例。 ...

October 18, 2020 · G. T. Wang

Boost 函式庫 Gzip Filter 串流壓縮教學與範例

介紹如何在 C++ 程式中使用 Boost 函式庫的 gzip filter 進行串流資料的壓縮與解壓縮。 安裝 Boost 函式庫 在 Ubuntu Linux 中可以直接使用 apt 安裝 Boost 函式庫。安裝時可以將整套 Boost 的所有元件一次裝好: ...

October 16, 2020 · G. T. Wang

C++ AWS SDK 以 S3 TransferManager 開發串流下載程式教學與範例

介紹如何使用 C++ AWS SDK 中的 S3 TransferManager 開發 object 下載程式,以串流寫入檔案。 S3 TransferManager 串流下載 以下是以 TransferManager 來自動處理 S3 下載流程的範例程式。 #include <aws/s3/S3Client.h> #include <aws/core/Aws.h> #include <aws/core/auth/AWSCredentialsProvider.h> #include <aws/transfer/TransferManager.h> #include <iostream> #include <fstream> static const char* const ALLOCATION_TAG = "S3_DOWNLOAD"; int main() { Aws::SDKOptions options; Aws::InitAPI(options); { // 自訂 S3 End Point const Aws::String endPoint = "YOUR.END.POINT"; // S3 Bucket 名稱 const Aws::String bucketName = "YOUR_BUCKET"; // Object 名稱 const Aws::String objectName = "CentOS-7-x86_64-Everything-1810.iso"; // 檔案名稱 Aws::String downloadFileName = objectName; // 認證資訊 const Aws::String accessKey = "ASFHDGN345JGS436FG53"; const Aws::String secretKey = "45G54d4cbGDF56bnFsfdgh489dfGHDdfgDFGHs4e"; // 建立 S3 Client Aws::Client::ClientConfiguration config; config.verifySSL = false; auto s3Client = Aws::MakeShared<Aws::S3::S3Client>(ALLOCATION_TAG, Aws::Auth::AWSCredentials(accessKey, secretKey), config); // 設定 S3 End Point s3Client->OverrideEndpoint(endPoint); // 建立 TransferManagerConfiguration auto sdk_client_executor = Aws::MakeShared<Aws::Utils::Threading::DefaultExecutor>(ALLOCATION_TAG); Aws::Transfer::TransferManagerConfiguration transferConfig(sdk_client_executor.get()); transferConfig.s3Client = s3Client; // 下載進度回呼函數 transferConfig.downloadProgressCallback = [](const Aws::Transfer::TransferManager*, const std::shared_ptr<const Aws::Transfer::TransferHandle>& handle) { std::cout << "Download Progress: " << handle->GetBytesTransferred() << " of " << handle->GetBytesTotalSize() << " bytes"; }; // 建立 TransferManager auto transferManager = Aws::Transfer::TransferManager::Create(transferConfig); // 下載 Object auto transferHandle = transferManager->DownloadFile(bucketName, objectName, [=](){ return Aws::New<Aws::FStream>(ALLOCATION_TAG, downloadFileName.c_str(), std::ios_base::out | std::ios_base::binary); }); // 等待下載 transferHandle->WaitUntilFinished(); } Aws::ShutdownAPI(options); return 0; } 此程式碼要配合以下 CMakeLists.txt 設定,以 CMake 來編譯: ...

October 16, 2020 · G. T. Wang