C++/CLI Archive

C# adding reference error - Checking a C++ DLL is valid for a C# project

DLLs compatible with C# projects can either be managed or unmanaged. However, if they're unmanaged, they cannot be included in the project using the standard References->Add Reference->Browse->OK method, as only managed DLLs can be added in .net applications in this method. To add unmanaged DLLs you need to use a form of DLLImport, which I

How to install OpenCV - Windows machines

Since 2012 when I first conducted an OpenCV project as part of my Bachelor's dissertation at Keele, I have ended up having to install OpenCV about 4 times on various computers. Today is yet another occasion where the need for an installation of OpenCV has been necessitated but, because of the length of time between

How to fix the 'Common Language Runtime was unable to set the breakpoint' error in Visual Studio projects

When you have multiple projects which link together, it can be handy to have them open in Visual Studio to debug through or work on them. This is especially true if you're using libraries which contain common code across projects. That is the purpose of a DLL after all (or static library), to provide common

How to convert OpenCV cv::mat to System Bitmap to System ImageSource

OpenCV is an open source computer vision library which can be used for a wide variety of things such as face recognition, people detection, motion tracking, video editing and image manipulation. For my undergraduate project, I made use of the OpenCV libraries to create a facial recognition system. It used a webcam to detect ID

Obtaining the angle between two vectors for 360 degrees

This previous post demonstrated how to obtain the angle between two vectors from three geometric points, providing an angle between 0-180 degrees. However, there may be times when you need the angle between 0-360 degrees instead, as I did earlier this week. As such, this post aims to complete the previous with the solution for

Calculating angle between two vectors from geometric points - code solution

Calculating the angle between two vectors is a fairly easy solution to find online - there are plenty of maths help websites which will take you through step by step how to work out the angle, however, not many sites will provide you with the necessary programming code to put this into your software. As

For loops - running method calls in the declaration

For loops are a key part of recursive code, allowing us to iterate over items in a vector, or perform actions a set number of times without repeating the lines of code. We all know how they can be applied and declared, however, something which may not be very well-known is the ability to call

Global keyboard listeners - pros and cons

As discussed previously, event listeners are a key component to GUI development and good software development. Being able to record mouse clicks, or keyboard keys can enhance the usability of software for the end-users. In this post, I intend to show you how to implement a global keyboard listener for C#. What is a global

C++/CLI Wrapper - marshalling GUIDs

GUIDs, unique identifiers which can be assigned to items in C# and C++ are another set of variables which, despite sharing many characteristics, need to be marshalled between the C# implementation and C++ implementations when using the CLI wrapper. Marshalling GUIDs between System.Guid and GUID GUIDs are useful variables to pass between C# and C++

C++/CLI Wrapper - marshalling strings

As mentioned previously, C++/CLI code makes use of managed data types to pass data between C# and C++. Primitive data types are not affected by this (int, double, bool, etc.) but others, such as strings, are. Marshalling strings between system and std Strings in C# are referred to as System Strings as they are a