我有一个简单的包含文件的问题.
包含的文件位于两个MFC程序中 - 其中一个是dll,它还将自身编译为非mfc dll.
最近,当我想要访问原始代码的一些未被更大的dll暴露的功能时,我正在使用更大的dll包裹较小的dll 的源.
由于这是一个测试,我只是将源添加到我的项目并调用函数.我收到此错误:语法错误:在'之前缺少')';'
该文件已正确包含,我在源文件夹中有.cpp和.h,在项目中但它不会编译.
我最终创建了一个非常小的测试项目,main.cpp,spooler.cpp和spooler.h(假脱机程序是comms的一个包装器)并试图编译它.同样的问题.
所以我撕掉了所有与dll相关的东西,以防万一有一个奇怪的问题继续发生,它仍然无法编译.
我想不出我的生活有什么不对.有没有人有任何想法?
ps Jeff你真的需要添加附加文件的能力,因为源会填满太多的数据屏幕.
我正在使用Turbo Delphi 2006.
DLL将作为VBA/DLL组合的一部分从Excel中调用.
问题的第一部分是试图找出如何向DLL传递对当前Excel会话的引用.我见过的大多数其他代码都是它启动了一个单独的Excel实例,而不是你所在的实例.
我已经看到一些C++代码创建了一个实例,IDispatch然后将一些东西传递给IDispatch对象的方法,但不知道很多C++.
有任何想法吗?
如果有人能帮助我,我将非常感激.我正在学习C++,而且我一直在努力解决这个问题.
基本上,VS C++ Express没有附带.DEF模板.我还有什么方法可以创建这个文件?
我可以在VS中设置一个参数,以便链接器可以动态创建吗?
谢谢!!!
通常,您必须将应用程序使用的所有.dll文件放在与.exe文件相同的位置.我想将这些库保存在其他专用文件夹中,只显示我的应用程序在哪里查找它们(通过app.config中的某个路径或类似的东西).我该怎么做呢?
我想从DLL处理一些SAPI消息,这是一种插件.如何处理VC++ DLL中的消息/事件.SAPI事件处理显示在以下示例中:http: //msdn.microsoft.com/en-us/library/ms720165%28VS.85%29.aspx
这是SDL在Visual Studio 2005中需要的一些代码,以便我的简单程序能够运行.代码在做什么?我拥有它的唯一原因是因为我的导师告诉我把它放入并且从未解释过.
// what is this code doing?
//---------------------------------------------------------
#ifdef WIN32
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "SDLmain.lib")
#endif
//-------------------------------------------------------
#include <iostream>
#include "SDL.h"
using namespace std;
int main(int argc, char *argv[])
{
if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO) == -1) {
cerr << "Failed to initialize SDL: " << SDL_GetError() << endl;
exit(1);
}
atexit(SDL_Quit);
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我需要编写一个DLL(使用Delphi),它动态加载到delphi应用程序中并进行RTTI查询(典型的操作是获取控件属性的字符串值).经典的问题是在应用程序和DLL之间传递字符串(和对象)是有问题的,因为两者中使用了不同的内存管理器(这可能导致内存问题,例如DLL的内存管理器会尝试释放由Application的内存管理器分配的内存).
有没有办法以不依赖于delphi版本的方式将DLL的内存管理器设置为应用程序的内存管理器?有什么想法吗?
2010年10月编辑:
由于对这个主题的兴趣几乎消失了 - 我将描述我最终得到的(非常差的)解决方案,以便其他人理解为什么我不接受任何建议的答案.
因此,一个哈克的方式来执行这样的事情是要找到RVA的MemoryManager结构(参见System.pas的实现部分)和DLL硬编码.这样,DLL就能够将其私有内存管理器设置为与其加载的应用程序相同.它适用于一些限制和问题; 无论如何 - 它非常依赖于Delphi编译器和链接器选项.
虽然这不是我正在寻找的答案 - 我没想到比这更好的东西.
应用程序是用delphi 2010编写的,底层的dll是C++ DLL.
在理想情况下,当您的应用程序使用C++时; 当事件发生时,dll会对应用程序进行回调.回调是通过接口实现的.应用程序开发人员实现抽象c ++类并将对象传递给dll.然后,dll将回调您实现的类的成员函数.它是一种经典的回调模式.
但是如何将delphi对象传递给dll以使其进行回调.
我们在 IIS 服务器上部署了 Razor 项目。我们还有一个供基于桌面的应用程序使用的单独的 DLL 项目。我们希望从 Razor 网站调用 DLL 中的功能。鉴于 Razor 网站是 .Net 6 并且类库是 .Net Framework 4.7.2,这可能吗?
我有一个用 Delphi 编写的简单 Dll:
library usr_d;
uses
System.SysUtils, System.Classes, DB,Vcl.Dialogs
;
{$R *.res}
Procedure SetMyData(DataSet: TDataSet);export;
begin
if Assigned(DataSet) then
begin
ShowMessage(DataSet.FieldByName('MyFieldName1').AsString);
try
DataSet.First;
except on E: Exception do
ShowMessage('Error accessing field: ' + E.Message);
end;
end
else
ShowMessage('DataSet parameter is not assigned!');
end;
exports
SetMyData;
begin
end.
Run Code Online (Sandbox Code Playgroud)
我这样称呼它:
Procedure TMainForm.CallMyDll;
type
TSetMyData = procedure(DataSet: TDataSet); stdcall;
Var
MyHandle : HMODULE;
SetMyData : TSetMyData;
Begin
MyHandle := LoadLibrary('c:\MyFolder\usr_d.dll');
if MyHandle <> 0 then
begin
@SetMyData := GetProcAddress(MyHandle, 'SetMyData');
if @SetMyData …Run Code Online (Sandbox Code Playgroud) dll ×10
c++ ×5
delphi ×4
.net ×2
c# ×1
excel ×1
idispatch ×1
include ×1
memory-leaks ×1
razor-pages ×1
sapi ×1
sdl ×1
vba ×1
visual-c++-6 ×1
wndproc ×1