none
vs2008里不支持DllImport吗? RRS feed

  • 问题

  • 编译的时候error C2337: DllImport未找到属性

    可是从2005转过来的工程里可以编译通过,新建的clr工程就不行。

    是不是需要设置参数?

    2008年5月20日 15:38

答案

  • using namespace System::Runtime::InteropServices;

     

    看你是写MC++的,这个就类似于标准C++里头的using,无非是添加一个程序集的引用让你的代码能够使用到Interop的相关类和方法罢了。

    2008年5月23日 0:32

全部回复

  •  

    你的全部代码
    2008年5月21日 2:23
    版主
  • 最简单的创建一个clr windows窗体应用程序项目,然后引用dll,会报错
    error C2337: “DllImport”: 未找到属性
    #pragma once
    namespace test {
        using namespace System;
        using namespace System::ComponentModel;
        using namespace System::Collections;
        using namespace System::Windows::Forms;
        using namespace System:Big Smileata;
        using namespace System:Big Smilerawing;
        [DllImport("test.dll")]
            static void test(float*, float*);
        public ref class Form1 : public System::Windows::Forms::Form
        {
        public:
            Form1(void)
            {
                InitializeComponent();
            }

        protected:
            ~Form1()
            {
                if (components)
                {
                    delete components;
                }
            }
        private: System::Windows::Forms::Button^  button1;
        protected:

        private:
            System::ComponentModel::Container ^components;

    #pragma region Windows Form Designer generated code
            void InitializeComponent(void)
            {
                 ....
                this->Name = L"Form1";
                this->Text = L"Form1";
                this->ResumeLayout(false);
            }
    #pragma endregion
        };
    }
    2008年5月21日 12:18
  • 多谢feiyun
    找到问题了
    少了
    using namespace System::Runtime::InteropServices;
    虽然还不明白这是什么意思。
    vs2005里面是有这个的,把他copy到2008的代码里就可以通过。
    2008年5月21日 12:38
  • 缺少命名空间

    2008年5月22日 0:58
    版主
  • using namespace System::Runtime::InteropServices;

     

    看你是写MC++的,这个就类似于标准C++里头的using,无非是添加一个程序集的引用让你的代码能够使用到Interop的相关类和方法罢了。

    2008年5月23日 0:32