السلام عليكم ورحمة الله وبركاته
لقد قمت بإنشاء ملف dll وقمت باستدعاءه في برنامج مكتوب بلغة السي مرة وفي برنامج سي شارب مرة اخرى (منفصلات)
أريد ان استخدمه ، استدعيه في نفس الوقت في كلا البرنامجين
السبب : أريد أن أقوم بتمرير حرف char من برنامج السي إلى برنامج السي شارب
هذاهو الكود :
Mydll.h
#ifndef __DLL_H_
#define __DLL_H_
#include <windows.h>
#define DLL_EXPORT __declspec(dllexport)
#define EXPORT __declspec(dllexport)
#ifdef __cplusplus
extern "C"
{
#endif
char DLL_EXPORT get(void);
void EXPORT set(char f);
#ifdef __cplusplus
}
#endif
#endif
Mydll.cpp
#include "Mydll.h"
extern "C" static char o;
void EXPORT set(char f){
o = f ;
}
char DLL_EXPORT get(void){
return o;
}
BOOL WINAPI DllMain(HANDLE hModule,DWORD dwReason,LPVOID lpReserved){
return TRUE;
}
C Code :
#include<stdio.h>
#include<windows.h>
main(){
HANDLE ldll;
typedef void (*set)(char f);
char k = 's' ;
set Set;
ldll = LoadLibrary(TEXT("Mydll.dll"));
Set = (set)GetProcAddress(ldll, "set");
Set(k);
}
C# Code :
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace Csharp
{
class Program
{
[DllImport("Mydll.dll")]
public static extern char get();
static void Main(string[] args)
{
Console.WriteLine(get());
Console.Read();
}
}
}
