C#使用C/C++的dll遇到的奇怪问题
// cmdll.c
// compile with: /LD /MD
int __declspec(dllexport) SampleMethod(int i)
{
return i*10;
}
//cmdll.cpp
//compile with:/LD /MD
int __declspec(dllexport) SampleMethod(int i)
{
return i*10;
}
两个文件完全相同,编译都生成cmdll.dll文件
第一个文件产生的dll在C#中可以调用,第二个提示找不到SampleMethod的入口点
public partial class Form1 : Form
{
[DllImport( "Cmdll.dll ")]
public static extern int SampleMethod(int x);
public Form1()
{
InitializeComponent();
//SnmpCleanup();
//MessageBox(0, "abc ", "def ", 0);
MessageBox.Show( " " + SampleMethod(1));
}
}
------解决方案--------------------用w32asm查看dll的输出
第一个因该是标准输出SampleMethod
第二个可能是非标准输出SampleMethod@@一串数字
------解决方案--------------------解决方法 建def文件 变成标准输出
------解决方案--------------------C和C++编译后对函数名的解析是不一样的,加个extern "C "应该就可以了