Объявлен файл Hello World DLL. Внешняя функция не найдена во время выполнения

Первоначально опубликовано здесь (https://stackoverflow.com/questions/32617735/declared-dll-but-errors-external-function-not-found) но был проинформирован о том, чтобы не использовать ни класс, ни пространство имен. Повторяю более простой пример, который я до сих пор не могу заставить работать.

DLL, созданная с помощью C ++ (Visual Studio):

// myFirstDLL.h
#define DECLDIR __declspec(dllexport)

DECLDIR int GIMMEFIVE();// myFirstDLL.cpp
#include "stdafx.h"#include "myFirstDLL.h"#include <stdexcept>

//using namespace std;

int GIMMEFIVE()
{
return 5;
}

LotusScript Agent:

Option Public
Option Declare

Declare Public Function GIMMEFIVE Lib "P:\Internet\dplows\visualstudio\myFirstDLL\myFirstDLL\Debug\myFirstDLL.dll" () As Integer

Sub Initialize
MsgBox GIMMEFIVE()

End Sub

1

Решение

Функция должна быть завернута в extern "C" блок;

extern "C"{
extern __declspec(dllexport) int GIMMEFIVE();
}
3

Другие решения

Объявите это как оба extern "C" а также __declspec(dllexport), Если вы сами не вызываете функцию из своей DLL, вам не нужно заранее ее объявлять. Вы можете сделать все это встроенным:

extern "C" __declspec(dllexport) int GIMMEFIVE()
{
return 5;
}
0

По вопросам рекламы [email protected]