Здравствуйте, NotForAll, Вы писали:
NFA>Всем большой привет.
NFA>Может ли Win32 приложение вызвать dll написанную на c++.NET?
NFA>Ломаю голову, впервые пришлось столкнуться с подобного рода задачей. NFA>Заранее благодарю.
Здравствуйте, NotForAll, Вы писали:
NFA>Всем большой привет.
NFA>Может ли Win32 приложение вызвать dll написанную на c++.NET?
NFA>Ломаю голову, впервые пришлось столкнуться с подобного рода задачей. NFA>Заранее благодарю.
Здравствуйте, NotForAll, Вы писали:
NFA>Всем большой привет.
NFA>Может ли Win32 приложение вызвать dll написанную на c++.NET?
NFA>Ломаю голову, впервые пришлось столкнуться с подобного рода задачей. NFA>Заранее благодарю.
Если бы это было на VB.NET VS2008 то там у project есть свойство "Register for COM interop", в 2005 и 2003 есть аналогичные.
Здравствуйте, NotForAll, Вы писали:
NFA>Всем большой привет.
NFA>Может ли Win32 приложение вызвать dll написанную на c++.NET?
NFA>Ломаю голову, впервые пришлось столкнуться с подобного рода задачей. NFA>Заранее благодарю.
Вызвать можно, например можно использовать продукт Inquartos Obfuscator
у него есть возможность делать статические функции .NET сборки экспортируемыми
Здравствуйте, NotForAll, Вы писали:
NFA>Здравствуйте, valkuzn, Вы писали:
V>>Может вызывать даже написанную на C# V>>http://www.inquartos.ru/products/iob/optimization_dllexport.php
NFA>"Тестирую" Obfuscator.
NFA>В интерфейсе dll должен быть указатель на хендл (HANDLE *phSubagentTrapEvent), NFA>т.е. к примеру что то вроде:
NFA>
NFA>[System.Reflection.Obfuscation(Feature="DllExport")]
NFA> public static void FunctionForExport(HANDLE *phSubagentTrapEvent)
NFA> {
NFA> System.Windows.Forms.MessageBox.Show(message,
NFA> "Message from Class1.FunctionForExport");
NFA> }
NFA>
NFA>В MSDN просматриваю MarshalAs, но подходящего ничего найти не могу. NFA>Возможно не в том направлении двигаюсь. NFA>Что можете посоветовать?
Вот так должно заработать (вместо IntPtr можно использовать и Int32)
using System;
using System.Runtime.InteropServices;
namespace ClassLibrary1
{
public class Class1
{
// для типа IntPtr (in,out)
[System.Reflection.Obfuscation(Feature = "DllExport")]
public static void FunctionForExport(ref IntPtr phSubagentTrapEvent)
{
}
}
}
NFA>Здравствуйте, valkuzn, Вы писали: V>>Может вызывать даже написанную на C# V>>http://www.inquartos.ru/products/iob/optimization_dllexport.php
NFA>"Тестирую" Obfuscator.
NFA>В интерфейсе dll должен быть указатель на хендл (HANDLE *phSubagentTrapEvent), NFA>т.е. к примеру что то вроде: NFA>
NFA>[System.Reflection.Obfuscation(Feature="DllExport")]
NFA> public static void FunctionForExport(HANDLE *phSubagentTrapEvent)
NFA> {
NFA> System.Windows.Forms.MessageBox.Show(message,
NFA> "Message from Class1.FunctionForExport");
NFA> }
NFA>
NFA>В MSDN просматриваю MarshalAs, но подходящего ничего найти не могу. NFA>Возможно не в том направлении двигаюсь. NFA>Что можете посоветовать?
Также подробнее можно узнать здесь, там есть примеры разного использования
Также примеры по теме (C#)
using System;
using System.Runtime.InteropServices;
namespace ClassLibrary2
{
public class Class1
{
// для типа int (in,out)
[System.Reflection.Obfuscation(Feature = "DllExport")]
public static void funForInt(ref int val)
{
val += 10;
}
// для типа string (out)
[System.Reflection.Obfuscation(Feature = "DllExport")]
public static void funForOutString([Out,
MarshalAs(UnmanagedType.LPWStr)] out string str)
{
str = "Init from funForOutString";
}
}
}