Я новичок в библиотеках DLL, и у меня есть задача написать некоторые библиотеки DLL на нескольких языках и создать зависимости между ними. Мне удалось создать DLL C# и импортировать его из приложения C#, а также создать C DLL и импортировать его из приложения C#. Но теперь я пробую еще 2 вещи:Невозможно найти точку входа с именем «HelloFromCPP»
- Запишите C++ DLL и импортируйте ее из приложения C#.
- Импорт DLL, который я написал из библиотеки C++.
У меня нет понятия о второй проблеме. Я искал, но я не мог найти то, что понял. Я был бы рад, если бы вы могли мне помочь.
О первой проблеме; Я написал C++ DLL и приложение C#, и в соответствии с некоторыми руководствами, которые я нашел, он должен работать, но он не работает для меня. C++ DLL файлы:
HelloCPPLibrary.h
#pragma once
namespace HelloCPPLibrary
{
class MyFunctions
{
public:
static __declspec(dllexport) char* HelloFromCPP();
};
}
HELLODLL3.cpp
#include "stdafx.h"
#include "HelloCPPLibrary.h"
using namespace std;
namespace HelloCPPLibrary
{
extern "C" {
char* HelloFromCPP() {
return "Hello from c++ dll";
}
}
}
C# приложение
using System;
using System.Runtime.InteropServices;
namespace TestDll
{
class Program
{
[DllImport(@"C:\Users\amitb\OneDrive\מסמכים\Visual Studio 2015\Projects\HELLODLL2\Debug\HELLODLL2")]
public static extern IntPtr HelloFromC();
[DllImport(@"C:\Users\amitb\OneDrive\מסמכים\Visual Studio 2015\Projects\HELLODLL3\Debug\HELLODLL3", CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr HelloFromCPP();
static void Main(string[] args)
{
Console.WriteLine(Marshal.PtrToStringAnsi(HelloFromC()));
Console.WriteLine(Marshal.PtrToStringAnsi(HelloFromCPP()));
Console.ReadKey();
}
}
}
При запуске приложения происходит сбой и возвращает ошибку в заголовке.
Может быть, это помогает найти решение, но это не решение само по себе. – user4581301