Forum
Merhaba arkadaşlar delphi için oluşturduğum bir c# dll var.Bu dll , delphi uygulama kendi pc imde çalışınca herhangi bir sorun çıkarmıyor.Ancak farklı bir pc ye geçince(windows 7 - 8 ) uygulama exe durdurma hatasına düşüyordu.Hatayı try catch ile yakaladım ve hata
" Nesne hedef türüyle eşleşmiyor "
Hata ,dll deki delegate ten oluşturduğum event ta vermektedir..Kod aşağıdadır.Şu nu göz önünde bulundurun kendi pc imde (derlerken veya exe den çalıştırma) çalışıyor herhangi bir hata vermiyor ancak farklı pc de bu hatayı veriyor..
[ComVisible(false)]
public delegate void DocumentEvent(object o,DocumentArgs e);
[Guid("CD71C405-E23A-42F6-B1CF-E15C1F415C5A")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[ComVisible(true)]
public interface IOperations
{
void DocumentReceived(object o, DocumentArgs e);
}
[Guid("8C6DAD17-0612-4166-AD35-3A55DDEAF62E")]
[ClassInterface(ClassInterfaceType.AutoDual)]
[ComVisible(true)]
[ComSourceInterfaces(typeof(IOperations))]
public class Operations:MarshalByRefObject
{
#region Methods
/// <summary>
/// OnDocumentReceived
/// </summary>
public event DocumentEvent DocumentReceived;
public void ExecDocumentReceived(object o, DocumentArgs e)
{
if (DocumentReceived != null)
{
try{
DocumentReceived(o,e);
}catch(exception ex)
{ throw new Exception(ex.Message); }
}
}
Kodu anlatayım Com dll bir tane döküman taradıktan sonra image pathlerini DocumentArgs objesine atmakta ve yukarıdaki ExecDocumentReceived fonksiyonunu çağırmakta.Burada ise en yukarıda oluşturulan delegate ten türeyen eventa (DocumentReceived(o,e)) atamaktadır. Bu kod satırına gelince " Nesne hedef türüyle eşleşmiyor " hatası vermekte.
Yine söylüyorum hata diğer pclerde çıkıyor.
Yardımlarınızı bekliyorum
Sanırım referanslarından biri eksik veya .Net Framework versiyonunda problem var. dll'in başvurduğu alt referansları kontrol etmelisin. Ayrıca bazı dll başvurularında, projeni derlerken .Net Client Profil kullanıyor olman sorun yaratabilir.
Yavuz Bey
Benim geliştirme yaparken kullandığım .Net Framework 3.5 ve .Net Client Profile değil.Böylede denedim ancak yine de olmadı.
Net Framework 4.0 yaptım denedim yine olmadı.