尝试使用excel

时间:2015-08-07 03:34:39

标签: c++ excel-vba dll visual-studio-2013 64-bit

我是初学者,我刚刚在c ++中构建了一个包含dll的项目。该项目由2个子项目组成:

  1. 包含文件的静态库项目:
  2. Rational.h

    #pragma once
    
    class Rational
    {
    private:
        int num;
        int den;
    
    public:
        Rational(int num_, int den_);
        Rational();
    
        double getValue();
    
    };
    

    Rational.cpp

    #include "Rational.h"
    
    Rational::Rational()
    {
    }
    
    Rational::Rational(int num_, int den_) : den(den_), num(num_)
    {
    }
    
    double Rational::getValue()
    {
        return  (double)num / (double) den;
    }
    
    1. 包含文件的dll项目:
    2. Proxy.h

      #pragma once
      
      #define DLL_EXPORT __declspec(dllexport)
      
      extern "C"
      {
          DLL_EXPORT double __stdcall getRationalValue(int num_, int den_);
      }
      

      Proxy.cpp

      #include "Proxy.h"
      #include "Rational.h"
      
      
      DLL_EXPORT double __stdcall getRationalValue(int num_, int den_)
      {
          Rational fraction(num_, den_);
      
          return fraction.getValue();
      }
      

      dll函数用于Excel文件。以下是要使用的函数的声明:

      Declare PtrSafe Function getRationalValue_vba Lib "C:\...\Documents\Visual Studio 2013\Projects\Rational\x64\Debug\RationalDll.dll" Alias "getRationalValue" (ByVal num As Long, ByVal den As Long) As Double
      

      为了测试这个功能,我在vba中有以下子项:

      Sub test()
      
          shtTests.Cells(1, 1) = getRationalValue_vba(4, 5)
      
      End Sub
      

      似乎工作正常。

      当我想从Visual Studio启动调试器时,会出现此问题。 在visual studio项目中:

      属性>调试>命令已设置为Excel.exe本地化。

      我在"返回"设置了一个断点。 proxy.cpp文件的行。 当我启动调试器时,excel打开很好。但是,当我执行sub test()时,视觉中的断点永远不会到达,应用程序崩溃。

      你能帮我理解这个问题吗?

0 个答案:

没有答案