- Mixing_.NET_and_Native_code.SOURCES.zip
- AdR.Samples.CLRCallingNative.CLRClient
- AdR.Samples.CLRCallingNative.MixedDLL
- AdR.Samples.CLRCallingNative.NativeDLL
- AdR.Samples.NativeCallingCLR.ClrAssembly
- AdR.Samples.NativeCallingCLR.ConsoleWithMFCAndCLR
- AdR.Samples.NativeCallingCLR.MixedDLL
- AdR.Samples.NativeCallingCLR.NativeConsole
- Mixing .NET and Native code.sln
- Mixing_.NET_and_Native_code.DEMO.zip
- x64
- AdR.Samples.CLRCallingNative.CLRClient.exe
- AdR.Samples.CLRCallingNative.CLRClient.exe.config
- AdR.Samples.CLRCallingNative.MixedDLL.dll
- AdR.Samples.CLRCallingNative.NativeDLL.dll
- AdR.Samples.CLRCallingNative.NativeDLL.exp
- AdR.Samples.CLRCallingNative.NativeDLL.lib
- AdR.Samples.NativeCallingCLR.ClrAssembly.dll
- AdR.Samples.NativeCallingCLR.ConsoleWithMFCAndCLR.exe
- AdR.Samples.NativeCallingCLR.MixedDLL.dll
- AdR.Samples.NativeCallingCLR.MixedDLL.exp
- AdR.Samples.NativeCallingCLR.MixedDLL.lib
- AdR.Samples.NativeCallingCLR.NativeConsole.exe
- x86
- AdR.Samples.CLRCallingNative.CLRClient.exe
- AdR.Samples.CLRCallingNative.CLRClient.exe.config
- AdR.Samples.CLRCallingNative.MixedDLL.dll
- AdR.Samples.CLRCallingNative.NativeDLL.dll
- AdR.Samples.CLRCallingNative.NativeDLL.exp
- AdR.Samples.CLRCallingNative.NativeDLL.lib
- AdR.Samples.NativeCallingCLR.ClrAssembly.dll
- AdR.Samples.NativeCallingCLR.ConsoleWithMFCAndCLR.exe
- AdR.Samples.NativeCallingCLR.MixedDLL.dll
- AdR.Samples.NativeCallingCLR.MixedDLL.exp
- AdR.Samples.NativeCallingCLR.MixedDLL.lib
- AdR.Samples.NativeCallingCLR.NativeConsole.exe
|
// This is the main DLL file.
#include "stdafx.h"
#include "AdR.Samples.CLRCallingNative.MixedDLL.h"
#include <vcclr.h>
using namespace AdR::Samples::CLRCallingNative::MixedDLL;
Person::Person(String^ name, DateTime birthDate)
{
SYSTEMTIME st = { (WORD)birthDate.Year, (WORD)birthDate.Month, (WORD)birthDate.DayOfWeek, (WORD)birthDate.Day,
(WORD)birthDate.Hour, (WORD)birthDate.Minute, (WORD)birthDate.Second, (WORD)birthDate.Millisecond };
// Pin 'name' memory before calling unmanaged code
pin_ptr<const TCHAR> psz = PtrToStringChars(name);
// Allocate the unmanaged object
_pPerson = new CPerson(psz, st);
}
Person::~Person()
{
System::Diagnostics::Debug::WriteLine("Person destructor.");
if (this->_pPerson != 0)
{
System::Diagnostics::Debug::WriteLine(" > deleting private unmanaged pointer.");
CPerson *pPerson = this->_pPerson;
this->_pPerson = 0;
delete pPerson;
}
}
unsigned int Person::Age::get()
{
return this->_pPerson->get_Age();
}
int Person::CallCFunctionImplicit()
{
return ::fnAdRSamplesCLRCallingNativeNativeDLL();
}
int Person::CallCVarImplicit()
{
return ::nAdRSamplesCLRCallingNativeNativeDLL;
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I started working in 1991 as an engineer. My pecialization: development in robotics.
After two years in this job, I began a new career leaving robotics, and coming to standard development as C++ expert.
This enabled me to diversify my knowledge by putting one foot on the side of the systems. Then began my double competence.
In 2000 I started a new job as consultant. Many experiences came with that new job, continuing with both development and systems subjects.
I reinforced my knowledge in technical architectures, IT security, and IT production management.
2011: a new experience. I founded the company Net-InB, a computer services company specialized in the fields of infrastructures, systems and software.
Now I am both technical and software architect specialized in Microsoft products and technologies.