feat: library example
This commit is contained in:
		
							parent
							
								
									37acbf07a7
								
							
						
					
					
						commit
						53b0d99431
					
				| @ -78,3 +78,5 @@ cmake --build build -j 8 --config Release | |||||||
| # Windows MinGW / Linux / macOS | # Windows MinGW / Linux / macOS | ||||||
| cmake --build build -j 8 | cmake --build build -j 8 | ||||||
| ``` | ``` | ||||||
|  | 
 | ||||||
|  | 你可以在 `build` 文件夹下找到编译好的二进制文件,以及一个可供其它项目使用的动态库(Windows Only),使用方法见仓库的 `example` 文件夹 | ||||||
|  | |||||||
							
								
								
									
										61
									
								
								example/csharp/NeteaseCrypt.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								example/csharp/NeteaseCrypt.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,61 @@ | |||||||
|  | using System; | ||||||
|  | using System.Runtime.InteropServices; | ||||||
|  | 
 | ||||||
|  | namespace libncmdump_demo_cli | ||||||
|  | { | ||||||
|  |     /// <summary> | ||||||
|  |     /// NeteaseCrypt C# Wrapper | ||||||
|  |     /// </summary> | ||||||
|  |     class NeteaseCrypt | ||||||
|  |     { | ||||||
|  |         const string DLL_PATH = "libncmdump.dll"; | ||||||
|  | 
 | ||||||
|  |         [DllImport(DLL_PATH, CallingConvention = CallingConvention.Cdecl)] | ||||||
|  |         private static extern IntPtr CreateNeteaseCrypt(IntPtr path); | ||||||
|  | 
 | ||||||
|  |         [DllImport(DLL_PATH, CallingConvention = CallingConvention.Cdecl)] | ||||||
|  |         private static extern int Dump(IntPtr NeteaseCrypt); | ||||||
|  | 
 | ||||||
|  |         [DllImport(DLL_PATH, CallingConvention = CallingConvention.Cdecl)] | ||||||
|  |         private static extern void FixMetadata(IntPtr NeteaseCrypt); | ||||||
|  | 
 | ||||||
|  |         [DllImport(DLL_PATH, CallingConvention = CallingConvention.Cdecl)] | ||||||
|  |         private static extern void DestroyNeteaseCrypt(IntPtr NeteaseCrypt); | ||||||
|  | 
 | ||||||
|  |         private IntPtr NeteaseCryptClass = IntPtr.Zero; | ||||||
|  | 
 | ||||||
|  |         /// <summary> | ||||||
|  |         /// 创建 NeteaseCrypt 类的实例。 | ||||||
|  |         /// </summary> | ||||||
|  |         /// <param name="FileName">网易云音乐 ncm 加密文件路径</param> | ||||||
|  |         public NeteaseCrypt(string FileName) | ||||||
|  |         { | ||||||
|  |             NeteaseCryptClass = CreateNeteaseCrypt(Marshal.StringToHGlobalAnsi(FileName)); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <summary> | ||||||
|  |         /// 启动转换过程。 | ||||||
|  |         /// </summary> | ||||||
|  |         /// <returns>返回一个整数,指示转储过程的结果。如果成功,返回0;如果失败,返回1。</returns> | ||||||
|  |         public int Dump() | ||||||
|  |         { | ||||||
|  |             return Dump(NeteaseCryptClass); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <summary> | ||||||
|  |         /// 修复音乐文件元数据。 | ||||||
|  |         /// </summary> | ||||||
|  |         public void FixMetadata() | ||||||
|  |         { | ||||||
|  |             FixMetadata(NeteaseCryptClass); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /// <summary> | ||||||
|  |         /// 销毁 NeteaseCrypt 类的实例。 | ||||||
|  |         /// </summary> | ||||||
|  |         public void Destroy() | ||||||
|  |         { | ||||||
|  |             DestroyNeteaseCrypt(NeteaseCryptClass); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										26
									
								
								example/csharp/Program.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								example/csharp/Program.cs
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,26 @@ | |||||||
|  | using System; | ||||||
|  | using System.Threading.Tasks; | ||||||
|  | 
 | ||||||
|  | namespace libncmdump_demo_cli | ||||||
|  | { | ||||||
|  |     internal class Program | ||||||
|  |     { | ||||||
|  |         static void Main(string[] args) | ||||||
|  |         { | ||||||
|  |             // 文件名 | ||||||
|  |             string filePath = "test.ncm"; | ||||||
|  | 
 | ||||||
|  |             // 创建 NeteaseCrypt 类的实例 | ||||||
|  |             NeteaseCrypt neteaseCrypt = new NeteaseCrypt(filePath); | ||||||
|  | 
 | ||||||
|  |             // 启动转换过程 | ||||||
|  |             int result = neteaseCrypt.Dump(); | ||||||
|  | 
 | ||||||
|  |             // 修复元数据 | ||||||
|  |             neteaseCrypt.FixMetadata(); | ||||||
|  | 
 | ||||||
|  |             // [务必]销毁 NeteaseCrypt 类的实例 | ||||||
|  |             neteaseCrypt.Destroy(); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user