Первоначально опубликовано здесь (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
Функция должна быть завернута в extern "C"
блок;
extern "C"{
extern __declspec(dllexport) int GIMMEFIVE();
}
Объявите это как оба extern "C"
а также __declspec(dllexport)
, Если вы сами не вызываете функцию из своей DLL, вам не нужно заранее ее объявлять. Вы можете сделать все это встроенным:
extern "C" __declspec(dllexport) int GIMMEFIVE()
{
return 5;
}