一、C#写的类库:
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassLibrary1
{
public class Class1
{
public String Name
{
get;
set;
}
public void helloWorld()
{
Console.WriteLine("hello world!");
}
}
}
// C#程序配置,一定是类库
二、C++ 程序
共有三个程序文件
(1) 主程序
// test1.cpp : 定义控制台应用程序的入口点。
//
///
//
// 在C++ 项目属性 [配置]-[常规] 中,公共语言运行时支持,一定要选择“公共语言运行时支持”
//
#include "stdafx.h"
#include "yotopcompany.h"
#using "..\ClassLibrary1\bin\Debug\ClassLibrary1.dll" //引用C#类库
using namespace ClassLibrary1; // 声明命名空间,非必须
int _tmain(int argc, _TCHAR* argv[])
{
printf("hello world");
ClassLibrary1::Class1 ^c = gcnew ClassLibrary1::Class1(); //注意一定要用 ^ , 一定要用gcnew
c->Name = "\nxignxianghong";
printf("%s\n", c->Name);
c->helloWorld();
YotopCompany ^a = gcnew YotopCompany("a","b","c");
printf("%s,%s,%s",a->name,a->address,a->phoneNumber);
getchar();
return 0;
}
(2) c++ 中自己编写的一个类
// yotopCompany.h
#pragma once
ref class YotopCompany
{
public:
YotopCompany(void);
YotopCompany(char* name,char* address,char* phoneNumber);
char* name ;
char* address;
char* phoneNumber;
};
(3) c++编写的类的CPP文件
//yotopcompany.cpp
#include "StdAfx.h"
#include "YotopCompany.h"
YotopCompany::YotopCompany(void)
{
name = "yotop";
phoneNumber = "12345678" ;
address = "北京";
}
YotopCompany::YotopCompany(char*_name ,char* _address,char* _phoneNumber)
{
name = _name;
address = _address;
phoneNumber = _phoneNumber ;
}
(4) c++ 程序配置
三、如果还有疑问,请参考 MSDN 文章:
// How to call a managed DLL from native Visual C++ code in Visual Studio.NET or in Visual Studio 2005
// 如何在 Visual Studio.NET 或 Visual Studio 2005 中的本机 Visual C++ 代码中调用托管的 DLL
// http://support.microsoft.com/kb/828736
四、总结:
1)用C#写任何的类库
2)C++ 中要引用此类库
3)创建C#对象时要用gcnew ;
4) C++ 编译设置一定设置为:支持公共语言运行时支持(/clr)
4) 自身的C++类要用 ref class 定义。
如何在C#中调用C\/C++ DLL中的方法
一、C#写的类库:using System;using System.Collections.Generic;using System.Text;namespace ClassLibrary1{ public class Class1 { public String Name { get; set; } public void helloWorld() { Console.WriteLine("hello world!"); } }}\/\/ C#程序配置,...
C#如何调用C++的DLL的结构体数组指针
调用方法:1、添加引用 右击项目-添加引用-浏览 找到本地的dll文件 2、using 该dll文件里面代码的名称空间 然后就可以调用dll文件里面的类(test)和方法(add)了 例如:using aa.test namespace conslole1 { class Program { static void Main(string[] args){ Test test1=new Test();test1.add(...
如何在C#中调试C++写的DLL代码
1.将DLL源码工程项目加入目前用到的C#工程的解决方案中。2.设置DLL工程的生成模式为Debug,Debug模式下会生成pdb调试文件。3.设置C#工程的生成模式为Debug,否则无法命中DLL源码中的断点。4.由于DLL工程是独立的,所以将DLL工程生成的dll文件以及pdb文件拷入C#工程的Debug输出目录下。5.设置断点,开始调试。
C# 成功注入DLL(C++)到进程后,如何调用DLL里的方法
C#调用需要把DLL库的接口封送。例如:本示例显示如何使用 DllImport 属性通过调用 msvcrt.dll 中的 puts 输出消息。\/\/ PInvokeTest.csusing System;using System.Runtime.InteropServices;class PlatformInvokeTest { [DllImport("msvcrt.dll")]public static extern int puts(string c);[DllImport("msvcrt....
c#调用C、C++编写的dll
该示例使用两个文件 CM.cs 和 Cmdll.c 来说明 extern。C 文件是示例 2 中创建的外部 DLL,它从 C# 程序内调用。\/\/ cm.cs using System;using System.Runtime.InteropServices;public class MainClass { [DllImport("Cmdll.dll")]public static extern int SampleMethod(int x);static void Main...
怎样在C#中调用DLL中的函数,最好有代码和详细说明
首先,应该在C#语言源程序中声明外部方法,其基本形式是:[DLLImport(“DLL文件”)]修饰符 extern 返回变量类型 方法名称 (参数列表)其中:DLL文件:包含定义外部方法的库文件。修饰符: 访问修饰符,除了abstract以外在声明方法时可以使用的修饰符。返回变量类型:在DLL文件中你需调用方法的返回变量类型。方法名称:在DLL文件...
c#dll调用c++dll,得到c#dll文件名
} 在上面的代码中,使用DllImport特性声明了MyFunction函数,并指定了C++ DLL文件名为MyCppDll.dll。如果需要动态获取当前C# DLL文件名,可以使用Assembly类中的GetExecutingAssembly方法来获取当前程序集,并调用Location属性来获取当前程序集的文件路径。例如:using System.Reflection;string dllFileName = ...
C# 可以引用c++的头文件吗? 该怎么引用呢
1.生成dll,然后让C#的程序引用那个dll 回答者: wefgod3 - 参将 八级 4-6 13:19 C#只能使用P\/Invoke进行平台调用,调用本地代码的函数 标记DllImport就行了 具体的建议你看msdn 有两种方法使用这些函数 2,把那个C++的文件编译成dll,在C#中用[DllImport("dll名")]引进调用 3,在C#中写一...
c#使用DllImport调用c++dll的函数
这里的int a为C++中方法的参数转换。例:C++DLL名:Interface.dll,函数为voidCopMemFree(void *vp);调用格式为:[DllImport("Interface.dll", EntryPoint = "CopMemFree")]public static extern void CopMemFree(IntPtr vp);其实C#调用C++dll主要就是C++与C#的参数转换比较困难。望楼主采纳。
C#调用c++dll中 函数带指针参数方法
CHAR* 可以先实例化一个StringBuilder然后可以传给char*类型 关于其他的请参考msdn中的c++与c#的类型转换 对应关系如下:C++ --- C 传入的char* ---string 传出的char* --- StringBuilder(预分配空间)short ---short char --- byte char[n] --- fixed byte[n]结构指针 ---结构指针 函...