未能从程序集“LRecordWave, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”中加载类型“LRecordWave.WaveAPIFun”,因为方法“waveInAddBuffer”没有实现(没有 RVA)。
我在照着网上的一个录音程序的源码编写一个录音程序出现以上的异常,waveInAddBuffer函数声明:
public static extern int waveInAddBuffer(IntPtr hwi, ref WaveHdr pwh, int cbwh);
//WaveHdr是一个结构体
使用是这样的:
m_Recording = WaveNative.waveInAddBuffer(m_WaveIn, ref m_Header, Marshal.SizeOf(m_Header)) == WaveNative.MMSYSERR_NOERROR; //MMSYSERR_NOERROR定义:public const int MMSYSERR_NOERROR = 0;// no error
//private IntPtr m_WaveIn;
//private WaveNative.WaveHdr m_Header;
网上的那个录音源码是可以运行的,而且用到的winmm.dll中其他函数没有出问题。
求高手指导,这个问题该怎么解决啊?
我在照着网上的一个录音程序的源码编写一个录音程序出现以上的异常,waveInAddBuffer函数声明:
public static extern int waveInAddBuffer(IntPtr hwi, ref WaveHdr pwh, int cbwh);
//WaveHdr是一个结构体
使用是这样的:
m_Recording = WaveNative.waveInAddBuffer(m_WaveIn, ref m_Header, Marshal.SizeOf(m_Header)) == WaveNative.MMSYSERR_NOERROR; //MMSYSERR_NOERROR定义:public const int MMSYSERR_NOERROR = 0;// no error
//private IntPtr m_WaveIn;
//private WaveNative.WaveHdr m_Header;
网上的那个录音源码是可以运行的,而且用到的winmm.dll中其他函数没有出问题。
求高手指导,这个问题该怎么解决啊?
http://download.csdn.net/source/2513079
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;
using System.Runtime.InteropServices;
namespace 录音
{
public partial class Form1 : Form
{
[DllImport("winmm.dll", EntryPoint = "mciSendString", CharSet = CharSet.Auto)]
public static extern int mciSendString(
string lpstrCommand,
string lpstrReturnString,
int uReturnLength,
int hwndCallback
); private void button1_Click(object sender, EventArgs e)
{
Directory.CreateDirectory("D:\\Voice");
MessageBox.Show("开始录音");
mciSendString("close movie", "", 0, 0);
mciSendString("open new type WAVEAudio alias movie", "", 0, 0);
mciSendString("record movie", "", 0, 0); } private void button2_Click(object sender, EventArgs e)
{
mciSendString("stop movie", "", 0, 0);
mciSendString("save movie D:\\Voice\\" + DateTime.Today.Month.ToString() + DateTime.Today.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + ".wav", "", 0, 0);
mciSendString("close movie", "", 0, 0);
MessageBox.Show("成功"); }
public Form1()
{
InitializeComponent();
} }