- Joined
- 4/13/08
- Messages
- 45
- Points
- 278
Dear All,
I am creating an Excel add-in using the XLW project on GitHub in Visual Studio 2022 C++.
I have done the following:
Create a solution MyFunction which contains two projects MyFunction and XLW.
In MyFunction, Configuration Properties -> General -> Configuration Type is set to Static Library.
In MyFunction,
[CODE lang="cpp" title="my_header.h"]#pragma once
double EchoDouble(double x);[/CODE]
[CODE lang="cpp" title="my_source.cpp"]#include "my_header.h"
double EchoDouble(double x)
{
return x;
}[/CODE]
In XLW, the XLW package is installed via NuGet Package Manager, and
[CODE lang="cpp" title="cppinterface.h"]#ifndef TEST_H
#define TEST_H
#include <xlw/MyContainers.h>
#include <xlw/CellMatrix.h>
#include <xlw/DoubleOrNothing.h>
#include <xlw/ArgList.h>
using namespace xlw;
//<xlw:libraryname=MyTestLibrary
double MyEchoDouble(double x);
#endif[/CODE]
[CODE lang="cpp" title="source.cpp"]#include "cppinterface.h"
#include "MyFunction/my_header.h"
#pragma warning (disable : 4996)
double MyEchoDouble(double x)
{
return EchoDouble(x);
}[/CODE]
MyFunction is built first and then XLW. Load the generated add-in XLW.xll in Excel and MyEchoDouble works.
To debug, I can do Debug -> Attach to Process -> Attach to Native code and select the Excel instance. It works fine.
Alternatively, I do
My questions are
FYI, this is a repost of the same question on StackOverflow here.
I am creating an Excel add-in using the XLW project on GitHub in Visual Studio 2022 C++.
I have done the following:
Create a solution MyFunction which contains two projects MyFunction and XLW.
In MyFunction, Configuration Properties -> General -> Configuration Type is set to Static Library.
In MyFunction,
[CODE lang="cpp" title="my_header.h"]#pragma once
double EchoDouble(double x);[/CODE]
[CODE lang="cpp" title="my_source.cpp"]#include "my_header.h"
double EchoDouble(double x)
{
return x;
}[/CODE]
In XLW, the XLW package is installed via NuGet Package Manager, and
- Configuration Properties -> General -> Configuration Type is set to Dynamic Library.
- Configuration Properties -> C/C++ -> Additional Include Directories is set to the folder which contains the solution.
- Configuration Properties -> Linker -> General -> Additional Library Directiories is set to the folder which contains MyFunction.lib.
- Configuration Properties -> Linker -> Input -> Additional Dependencies is set to MyFunction.lib.
[CODE lang="cpp" title="cppinterface.h"]#ifndef TEST_H
#define TEST_H
#include <xlw/MyContainers.h>
#include <xlw/CellMatrix.h>
#include <xlw/DoubleOrNothing.h>
#include <xlw/ArgList.h>
using namespace xlw;
//<xlw:libraryname=MyTestLibrary
double MyEchoDouble(double x);
#endif[/CODE]
[CODE lang="cpp" title="source.cpp"]#include "cppinterface.h"
#include "MyFunction/my_header.h"
#pragma warning (disable : 4996)
double MyEchoDouble(double x)
{
return EchoDouble(x);
}[/CODE]
MyFunction is built first and then XLW. Load the generated add-in XLW.xll in Excel and MyEchoDouble works.
To debug, I can do Debug -> Attach to Process -> Attach to Native code and select the Excel instance. It works fine.
Alternatively, I do
- Configuration Properties -> Debugging -> Command is set to the path for EXCEL.EXE
- Configuration Properties -> Debugging -> Command Arguments is set to $(TargetPath)
- Set XLW as startup project.
Exception Thrown
Exception thrown at 0x00007FFE8496B74B in EXCEL.EXE: 0xC0000005: Access violation reading location 0x0000000000000000.Frame not in module
The current stack frame was not found in a loaded module. Source cannot be shown for this location.My questions are
- Is the way I set up the projects correct? What I want to achieve is that all functions are implemented in MyFunction project. Then corresponding Excel functions are done in XLW project, and the add-in is generated by the XLW project.
- What went wrong with the alternative debugging method?
FYI, this is a repost of the same question on StackOverflow here.