• Lunes 29 de Abril de 2024, 11:18

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - xouba

Páginas: [1]
1
C# / Re:Problema de Framework utilizar mi aplicación en otros ordenadores
« en: Viernes 20 de Enero de 2012, 13:40 »
En principio parece que lo he solucionado con la instalación del paquete Microsoft Visual C++ 2010 Redistributable Package (x86). Ya no da más ese error.

2
C# / Problema de Framework utilizar mi aplicación en otros ordenadores
« en: Jueves 19 de Enero de 2012, 02:02 »
Buenas! He mirado en otros temas pero no he conseguido solucionar mi problema. Resumiendo. Tengo una aplicación generada en modo release (dos archivos, la aplicación.exe y una biblioteca dll), en mi ordenador funciona perfectamente, pero tengo instalado visual studio 2010 y las bibliotecas que esto conlleva.
Pues bien en otros ordenadores como es lógico, le instalo el framework 4.0 client profile para ejecutar mi aplicación, en unos funciona sin problema y en otro me da un error de llamada a la dll.
Agradecería cualquier ayuda, muchas gracias!!!

3
C/C++ / Re: messageBox error lnk2028
« en: Domingo 25 de Diciembre de 2011, 04:36 »
Muchísimas gracias. Ahora funciona perfectamente.

4
C/C++ / messageBox error lnk2028
« en: Sábado 24 de Diciembre de 2011, 16:05 »
Hola a todos, espero estar en el foro correcto ya que mi duda es la siguiente. He realizado una solución en visual studio 2010 que consta de un proyecto de biblioteca de clases en c++(mi Entrenar.dll) y un proyecto de windows forms en c# (la interfaz). He utilizado dll(import)de la siguiente manera.

Entrenar.h
Código: C++
  1.  
  2. #pragma once
  3.  
  4. using namespace System;
  5.  
  6.  
  7.  
  8. extern "C"
  9. {
  10.         __declspec(dllexport) int __cdecl Error(char* Mensaje,char* Titulo, int  tipo);
  11. }
  12.  
  13. class __declspec(dllexport) Func_Exportadas
  14.         {
  15.         public:
  16.                 static int Error    (char* Mensaje,char* Titulo, int  tipo);
  17. };

Entrenar.cpp
Código: C++
  1. #include "Stdafx.h"
  2. #include <windows.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <math.h>
  6. #include <time.h>
  7. #include "Entrenar.h"
  8.  
  9. int  Error          (char* Mensaje, char* Titulo, int  tipo)    {return Func_Exportadas::Error(Mensaje,Titulo,tipo);};
  10.  
  11.  
  12. int  Func_Exportadas::Error(char* Mensaje,char* Titulo,int tipo)
  13. {      
  14.        
  15.        
  16.         LPCTSTR Mensaje_Cast;
  17.         Mensaje_Cast=(LPCTSTR)Mensaje;
  18.         LPCTSTR Titulo_Cast;
  19.         Titulo_Cast=(LPCTSTR)Titulo;
  20.        
  21.        
  22.  switch (tipo)
  23.  {
  24.                        
  25.         case  1:   MessageBox(NULL,Mensaje_Cast,Titulo_Cast,MB_ICONSTOP|
  26.                                                         MB_TASKMODAL);
  27.                                   return(FALSE);
  28.         case  2:   MessageBox(NULL,Mensaje_Cast,Titulo_Cast,MB_ICONINFORMATION|
  29.                                                         MB_TASKMODAL);
  30.                                   return(FALSE);
  31.         case  3:   MessageBox(NULL,Mensaje_Cast,Titulo_Cast,MB_ICONSTOP|
  32.                                                         MB_TASKMODAL);
  33.                                   return(FALSE);
  34.         case  4:   MessageBox(NULL,Mensaje_Cast,Titulo_Cast,MB_ICONEXCLAMATION|
  35.                                                         MB_TASKMODAL);
  36.                                   return(FALSE);
  37.                                  
  38.  }
  39.  return (TRUE);
  40. }

interfaz.cs
Código: C#
  1. namespace Interfaz
  2. {
  3.     public partial class Fm_Principal : Form
  4.     {
  5.  
  6.  
  7.         public Fm_Principal()
  8.         {
  9.             InitializeComponent();
  10.          }
  11.  
  12.  [DllImport("Entrenar.dll")]
  13.         public static extern int Error(string Mensaje, string Titulo, int tipo);
  14.  
  15. Error("Hola","prueba",2);
  16.    }
  17. }
  18.  

No pongo todo el código pues sería imposible, realizo todos los using necesarios en c# y el proyecto en sí funciona perfectamente en modo Debug. Ahora bien, al ponerlo en modo Release me surgen estos errores:



Error   1   error LNK2028: se hace referencia al símbolo (token) sin resolver (0A0000D3) "extern "C" int __stdcall MessageBoxW(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBoxW@@$$J216YGHPAUHWND__@@PB_W1I@Z) en la función "extern "C" int __cdecl MessageBox(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBox@@$$J0YAHPAUHWND__@@PB_W1I@Z)   C:\Users\Asus\Documents\Visual Studio 2010\Projects\Interfaz\Entrenar\Entrenar.obj   Entrenar
Error   2   error LNK2019: símbolo externo "extern "C" int __stdcall MessageBoxW(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBoxW@@$$J216YGHPAUHWND__@@PB_W1I@Z) sin resolver al que se hace referencia en la función "extern "C" int __cdecl MessageBox(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBox@@$$J0YAHPAUHWND__@@PB_W1I@Z)   C:\Users\Asus\Documents\Visual Studio 2010\Projects\Interfaz\Entrenar\Entrenar.obj   Entrenar
Error   3   error LNK1120: 2 externos sin resolver   C:\Users\Asus\Documents\Visual Studio 2010\Projects\Interfaz\Release\Entrenar.dll   Entrenar
Error   4   No se encuentra el ensamblado de referencia "C:\Users\Asus\Documents\Visual Studio 2010\Projects\Interfaz\Release\Entrenar.dll". Si este ensamblado lo genera otro de sus proyectos, asegúrese de compilar ese proyecto primero.   Interfaz

Tengo otras muchas funciones exportadas de la misma manera que funcionan perfectamente tanto en debug como en release el problema se centra en MessageBox ya que si comento el switch completo de Entrenar.cpp (es decir, no se llama nunca a messageBox) el código compila y se genera perfectamente en release, pero el problema es que me hace falta sí o sí. Siento mucho el rollo y agredecería cualquier ayuda o idea por pequeña que sea. Muchas gracias.

5
C# / Re:Realizar Zoom en Chart
« en: Domingo 18 de Diciembre de 2011, 19:41 »
He seguido investigando y me he respondido a mi mismo así que dejo aquí la respuesta por si a alguien le interesa.

Código: C#
  1. chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
  2. chart1.ChartAreas[0].AxisY.ScaleView.Zoomable = true;

Mediante la propiedad Zoomable activamos la opción de zoom que por defecto está deshabilitada para poder utilizar el método Zoom()

Código: C#
  1. chart1.ChartAreas[0].AxisX.ScaleView.Zoom();
  2. chart1.ChartAreas[0].AxisY.ScaleView.Zoom();

que puede tomar 2,3 o 4 argumentos donde irán los parámetros necesarios para realizar el  zoom.

Un saludo.

6
C# / Realizar Zoom en Chart
« en: Miércoles 14 de Diciembre de 2011, 16:50 »
¡Hola! Me gustaría saber si se puede realizar zoom en los gráficos de un control chart en visual studio 2010 y cómo.
Proyecto de Windows Forms en c#.

Gracias.

7
C/C++ / Re: Exportar funciones desde c++
« en: Domingo 10 de Julio de 2011, 16:57 »
Muchas gracias por tu respuesta. He estado probando la utilización de dllimport y finalmente me funciona de la siguiente manera:

Código: C++
  1. // prueba.h
  2. #pragma once
  3.  
  4. using namespace System;
  5.  
  6.     extern "C" __declspec(dllexport) int __cdecl suma();
  7.  
  8.     class Clase1
  9.     {
  10.     public: 
  11.         static int suma();
  12.     };
  13.  
  14.  

Código: C++
  1. // Archivo DLL principal.
  2.  
  3. #include "stdafx.h"
  4. #include "prueba.h"
  5.  
  6. int suma(){return Clase1::suma();};
  7. int Clase1::suma()
  8. {
  9.     return 8;
  10. }
  11.  

Código: C#
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Runtime.InteropServices;
  10.  
  11. namespace WindowsFormsApplication1
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         public Form1()
  16.         {
  17.             InitializeComponent();
  18.         }
  19.         [DllImport("prueba.dll"/*, EntryPoint = "suma", CharSet = CharSet.Unicode*/)]
  20.         public static extern int suma();
  21.         private void button1_Click(object sender, EventArgs e)
  22.         {
  23.             listBox1.Items.Add("Suma es " + suma());
  24.         }
  25.     }
  26. }
  27.  

Es un código muy sencillito donde desde mi interfaz en c# importo una función de mi biblioteca en c++ para utilizarla al pulsar el botón. Me gustaría saber si esta forma de relacionar mis 2 proyectos es "eficiente" o podría mejorarlo, para ya poder empezar a complicar la cosa. Muchas gracias de antemano.

8
C/C++ / Exportar funciones desde c++
« en: Miércoles 6 de Julio de 2011, 01:23 »
Hola, estoy empezando a programar desde el entorno visual studio 2010. Mi duda es la siguiente:
Teniendo un código en c++ me gustaria utilizarlo como un dll, para ello creo un proyecto en visual c++ y como biblioteca de clases, entonces, entiendo que el código debe ubicarse en el archivo .cpp y si quiero exportar funciones a otro proyecto en otro lenguaje por ejemplo c# ¿Qué debería hacer? ¿Poner los enunciados de las funciones en el archivo .h?
Muchas gracias y perdón si repito post pero navengando por el foro no solucioné mis dudas.

Páginas: [1]