C++下如何將TensorFlow模型封裝成DLL供C#調用
生成dll
IDE使用visual studio 2015。
首先新建一個C++win32工程,選擇dll,包括導出符號,但不要預編譯頭。
模板會提供一個工程同名的頭文件和一個源文件。
在源文件中將TensorFlow頭文件和其他需要使用的頭文件引用進來。

在源文件中定義需要export的函數。

在頭文件中給出需導出函數的聲明。

extern 關鍵字后加“C”保證在C#調用時不生成中間函數名。
編譯環(huán)境選擇X64,配置好include、lib目錄以及附加依賴項文件,生成解決方案。
在輸出目錄會看見生成了dll文件。
使用C#調用dll
new project,創(chuàng)建一個C#控制臺程序進行測試,將C#工程添加到當前solution中,右鍵設為工程第一啟動項。打開C#工程屬性,將build選項中的平臺設置為x64(很關鍵)

在C#的cs文件中首先include 頭文件system.runtime.interopservices。將dll工程的輸出目錄設置為C#的debug目錄,與EXE文件同級。
重新生成解決方案,此時生成的tfdll.dll會出現在C#的debug目錄下。
使用DllImport導入dll文件,如下圖所示代碼即可調用dll中的函數。

若出現badimage報錯,試圖加載不正確的dll,可能是由于位數選擇出錯,dll和C#沖突。
若出現找不到dll報錯,可能是由于未將此dll所需的依賴dll一同拷入debug文件夾下。
下圖中的TensorFlow的dll即是tfdll的依賴庫。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
VScode搭建C/C++開發(fā)環(huán)境的詳細過程
最近迷上了vscode,小巧美觀,最主要的是全平臺,但是vscode并不是ide,必須得自己配置環(huán)境,下面這篇文章主要給大家介紹了關于VScode搭建C/C++開發(fā)環(huán)境的詳細過程,需要的朋友可以參考下2023-06-06
解決codeblocks致命錯誤:openssl/aes.h:沒有這樣的文件或目錄問題
這篇文章主要介紹了解決codeblocks致命錯誤:openssl/aes.h:沒有這樣的文件或目錄問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06

