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 | ||||
| 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