2017-08-26 1 views
2

Travailler avec:
Visual Studio 2017
NET Framework 3.5
bâtiment pour toute CPU
en utilisant la version VLC 32 bits 2.2 0,6
utilisant Vlc.DotNet (parce que je pense qu'il est une seule qui fonctionne sur tout cadre NET ...)VLC.DotNet System.ComponentModel.Win32Exception: '% 1 n'est pas une application Win32 valide'

J'ai créé le nouveau formulaire juste pour le test, comment fonctionne la bibliothèque (ou si les travaux)
utilisés drag and drop méthode pour "VlcControl" et un bouton
Tout le code est ci-dessous:

Form.cs:

using System; 
using System.IO; 
using System.Windows.Forms; 

namespace WindowsFormsApp2 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      OpenFileDialog ofd = new OpenFileDialog 
      { 
       Filter = "(*.mp4) | *.mp4" 
      }; 

      if (ofd.ShowDialog() == DialogResult.OK) 
      { 
       vlcControl1.SetMedia(new FileInfo(Path.GetFileName(ofd.FileName))); 
       vlcControl1.Play(); 
      } 
     } 
    } 
} 

Form.Designer.cs (généré)

namespace WindowsFormsApp2 
{ 
    partial class Form1 
    { 
     /// <summary> 
     /// Required designer variable. 
     /// </summary> 
     private System.ComponentModel.IContainer components = null; 

     /// <summary> 
     /// Clean up any resources being used. 
     /// </summary> 
     /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> 
     protected override void Dispose(bool disposing) 
     { 
      if (disposing && (components != null)) 
      { 
       components.Dispose(); 
      } 
      base.Dispose(disposing); 
     } 

     #region Windows Form Designer generated code 

     /// <summary> 
     /// Required method for Designer support - do not modify 
     /// the contents of this method with the code editor. 
     /// </summary> 
     private void InitializeComponent() 
     { 
      this.button1 = new System.Windows.Forms.Button(); 
      this.vlcControl1 = new Vlc.DotNet.Forms.VlcControl(); 
      ((System.ComponentModel.ISupportInitialize)(this.vlcControl1)).BeginInit(); 
      this.SuspendLayout(); 
      // 
      // button1 
      // 
      this.button1.Location = new System.Drawing.Point(12, 255); 
      this.button1.Name = "button1"; 
      this.button1.Size = new System.Drawing.Size(260, 42); 
      this.button1.TabIndex = 1; 
      this.button1.Text = "button1"; 
      this.button1.UseVisualStyleBackColor = true; 
      this.button1.Click += new System.EventHandler(this.button1_Click); 
      // 
      // vlcControl1 
      // 
      this.vlcControl1.BackColor = System.Drawing.Color.Black; 
      this.vlcControl1.Location = new System.Drawing.Point(12, 12); 
      this.vlcControl1.Name = "vlcControl1"; 
      this.vlcControl1.Size = new System.Drawing.Size(260, 237); 
      this.vlcControl1.Spu = -1; 
      this.vlcControl1.TabIndex = 2; 
      this.vlcControl1.Text = "vlcControl1"; 
      this.vlcControl1.VlcLibDirectory = new System.IO.DirectoryInfo("C:\\Program Files (x86)\\VideoLAN\\VLC"); 
      this.vlcControl1.VlcMediaplayerOptions = null; 
      // 
      // Form1 
      // 
      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); 
      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 
      this.ClientSize = new System.Drawing.Size(284, 309); 
      this.Controls.Add(this.vlcControl1); 
      this.Controls.Add(this.button1); 
      this.Name = "Form1"; 
      this.Text = "Form1"; 
      ((System.ComponentModel.ISupportInitialize)(this.vlcControl1)).EndInit(); 
      this.ResumeLayout(false); 
     } 

     #endregion 
     private System.Windows.Forms.Button button1; 
     private Vlc.DotNet.Forms.VlcControl vlcControl1; 
    } 
} 

Program.cs

using System; 
using System.Windows.Forms; 

namespace WindowsFormsApp2 
{ 
    static class Program 
    { 
     [STAThread] 
     static void Main() 
     { 
      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Application.Run(new Form1()); 
     } 
    } 
} 

Maintenant la question est:

Après avoir appelé "InitializeComponent()", le plantage du programme:

Dans le fichier: Form.Designer.cs

ligne avec:. ((System.ComponentModel.ISupportInitialize) (this.vlcControl1)) EndInit ()

lancers francs System.ComponentModel.Win32Exception: '% 1 n'est pas une application Win32 valide'

Comment puis-je résoudre ce problème ???

+0

"en utilisant VLC 32 bits". Ce n'est pas AnyCPU, c'est x86. –

+0

Option définie sur n'importe quel CPU je sais déjà que cette application sera x86 à cause de VLC –

Répondre

1

Il suffit de définir: Projet-> Propriétés-> Construire -> Plateforme cible = x86

+0

Nope ... Sachez déjà que tous les VLC 64 bits sont seulement expérimentales ... Voir Designer ... Il est déjà réglé sur Program Files (x86) ... (alias 32 bits) ... –

+0

Essayez de définir la propriété Platform Target = x86 dans les paramètres de construction du projet. – MakS

+0

Merci @MakS ... Cela fonctionne ... Problème résolu ... –