未能从程序集“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中其他函数没有出问题。
求高手指导,这个问题该怎么解决啊?

解决方案 »

  1.   

    我草!刚刚改好了,原来是没有在之前设置任何属性,加上[DllImport(“winmm.dll”)]后就没问题了,但是录制出来的.wav文件没声音,大小也为0kb,继续郁闷中
      

  2.   

    我这个程序有录音功能
    http://download.csdn.net/source/2513079
      

  3.   

    using System;
    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();
            } } 
      

  4.   

    楼上的这个录音程序,是录制的.wav文件么?无论如何还是感谢各位了,问题自己解决了,主要是在声明.wav文件格式的时候没有控制类的数据字段的物理布局,所以在缓冲区中没有写入到文件中去。谢谢各位,散分了!