Error: “El proveedor ‘Microsoft.ACE.OLEDB.12.0’ No esta registrado en el equipo local”

Tengo un .EXE que me permite convertir un archivo de excel .xls a .csv.con el siguiente codigo:

        public void convertExcelToCSV(string sourceFile, string worksheetName, string targetFile)      {         string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sourceFile + ";Persist Security Info=False;Extended Properties=&quot;Excel 12.0 Xml;HDR=YES;IMEX=1;";          OleDbConnection conn = null;         StreamWriter wrtr = null;         OleDbCommand cmd = null;         OleDbDataAdapter da = null;          try         {             conn = new OleDbConnection(strConn);             conn.Open();             cmd = new OleDbCommand("SELECT * FROM [" + worksheetName + "$  ]", conn);             cmd.CommandType = CommandType.Text;             wrtr = new StreamWriter(targetFile);             da = new OleDbDataAdapter(cmd);             DataTable dt = new DataTable();             da.Fill(dt);              for (int x = 0; x < dt.Rows.Count; x++)             {                 string rowString = "";                 for (int y = 0; y < dt.Columns.Count; y++)                 {                     rowString += "\"" + dt.Rows[x][y].ToString() + "\"_";                 }                 wrtr.WriteLine(rowString);             }         }         catch (Exception exc)         {             Console.WriteLine(exc.ToString());             Console.ReadLine();         }         finally         {             if (conn.State == ConnectionState.Open)             {                 conn.Close();                 conn.Dispose();                 cmd.Dispose();                 da.Dispose();                 wrtr.Close();                 wrtr.Dispose();             }         }     } 

En este ejecutable funciona perfecto, me convierte el .xls a .csv. El problema esta en que puse este mismo código en una dll que luego referencio desde otra y llamo a este método, pero al hacerlo me da el error mencionado en el titulo. NOTA: todos los proyectos están en la misma versión de framework y tienen las mismas referencias.

Gracias.

¿El programa no itera ni calcula los resultados esperados?

Estoy intentando crear una funcion que al mirar una lista de valores de un archivo .csv en el cual hay 3 datos por linea, id, gender y age. Tras la ejecuccion se cuentan cuantos M y F habia pero al ejecutar el codigo al final obtengo que el la iteracion del while solo se ejecuta una vez y que solo tengo una M ya que solo se ha ejecutado el codigo una vez. Cuando he forzado a que iterase un numero de veces me dice que solo hay M’s lo que me lleva a pensar a que seguramente este leyendo los datos de forma erronea. El codigo que he escrito es:

else{     ifstream f;     f.open (direccion1);     if (f.is_open()){     string female = "F";     string male = "M";     int females = 0;     int males = 0;     string idU;     string gender;     string age;         while (f.good()){                            getline (f, idU, ',');               getline (f, gender, ',');             getline (f, age, ',');              if (gender == female){                 females++;             }             else if (gender == male){                 males++;             }         }      cout << "\nUsos de Bizi por hombres: " << males;     cout << "\nUsos de Bizi por mujeres: " << females;     f.close();     } } 

introducir la descripción de la imagen aquí

Puse para probar un contador de iteraciones dentro del while y en efecto solo se ejecuto una vez y por mucho que miro no consigo ver el error. Tambien para mas informacion aqui dejo el diseño del fichero .csv

introducir la descripción de la imagen aquí

¿Alguna idea de porque los valores no varian y solo se ejecuta el bucle una vez? Muchas gracias por cualquier aporte!

¿EL METODO PAINT() A QUE CLASE PADRE PERTENCE ORIGINALMENTE A LA CLASE COMPONENT O LA CLASE CONTAINER?

He investigado y veo que en la api de java el metodo paint() se repite en la clase component y en la clase container y quisiera saber este metodo paint de donde viene originalmente de container o de component? o los dos son 2 metodos con funcionalidades diferentes pero con el mismo nombre ??