标签: dll

通过psapi.dll调用GetModuleFileNameEx不起作用,但为什么?

我正在使用没有完整功能的MinGW.例如.它没有wchar_t流支持.我已经设法通过编写一组迷你操纵器(下面的代码中的wcusT())来解决这个问题.但是我发现我再次遇到了GetModuleFileNameEx.我无法原生运行GetModuleFileNameEx()此函数已定义<psapi.h>,但似乎没有任何内容可以链接到.这是我的第一个问题:可以/确实/是MinGW能够运行GetModuleFileNameEx吗?我需要做什么?我错过了一些简单的事吗?作为一种解决方法,我试图通过调用它在Windows system32文件夹中的dll(psapi.dll)来间接运行它......但是出了点问题.我还有另一个禁区.我对以下代码的任何评论表示感谢..谢谢

int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow)
{ /// typedef and load a dll function
  /// ===============================
  typedef DWORD (__stdcall *foo)(HANDLE, HMODULE, LPTSTR, DWORD);
  LPTSTR  ptcPSAPI_DLL = _T("C:\\WINDOWS\\system32\\psapi.dll");
  HMODULE   hPSAPI_DLL = LoadLibrary(ptcPSAPI_DLL);
  if( !hPSAPI_DLL ) 
  { std::cout<<"ERROR: Failed to load "<<wcusT(ptcPSAPI_DLL)<<std::endl;
    return 1;
  }
  foo GetModFnEx=(foo)GetProcAddress(hPSAPI_DLL,
                  #ifdef  UNICODE
                         "GetModuleFileNameExW");
                  #else
                         "GetModuleFileNameExA");
                  #endif

  /// call the dll library function
  /// =============================
  HWND   hWndNPP = FindWindow(_T("Notepad++"),NULL); // the window calass name
  TCHAR  ytcMFqFn[FILENAME_MAX]; // …
Run Code Online (Sandbox Code Playgroud)

c++ dll

0
推荐指数
1
解决办法
2125
查看次数

我可以使Visual Studio创建调试DLL为XXXd.DLL而不是XXX.DLL?

我找到了一个解决方案,但它只适用于你使用.DEF文件(我没有).

我想知道这是否可以在没有.DEF文件的情况下完成.

c++ debugging dll release visual-studio

0
推荐指数
1
解决办法
386
查看次数

如何从资源中提取DLL

我的应用程序使用Bass.dll并将其添加到资源中.我想在应用程序启动之前将其解压缩.如何取消它?

delphi dll extraction

0
推荐指数
2
解决办法
868
查看次数

delphi exe和dll没有使用运行时包构建

对于我的上一个项目,我在delphi应用程序中使用了很多帧,所以我决定创建dll并将它们放在dll中(所有在Delphi中创建)

我已经浏览了很多网站,并提出了有效的代码,但对于该示例,我必须使用运行时包编译这两个应用程序和dll,这意味着我还必须分发bpls.如果不检查构建与运行时包错误即将到来

这是我发现的代码

在exe中

procedure TForm1.Button1Click(Sender: TObject);
type
TGetTheFrame =Function( Owner: TComponent; TheParent: TWinControl ): TFrame; stdcall ;
 var
  GetTheFrame : TGetTheFrame;
begin
try
   GetTheFrame(application,TabSheet1).Free ;
except
end;
frm := GetTheFrame(application,TabSheet1) ;
dllHandle := LoadLibrary('project1.dll') ;
   if dllHandle <> 0 then
   begin
     GetTheFrame := GetProcAddress(dllHandle, 'GetTheFrame') ;
  frm := GetTheFrame(application,TabSheet1)   //call the function
    {   ShowMessage('error function not found') ;
     FreeLibrary(dllHandle) ; }
   end
   else
   begin
     ShowMessage('xxxx.dll not found / not loaded') ;
   end
Run Code Online (Sandbox Code Playgroud)

在DLL中

Function  GetTheFrame( Owner: TComponent; …
Run Code Online (Sandbox Code Playgroud)

delphi dll runtime bpl frame

0
推荐指数
1
解决办法
2498
查看次数

Windows窗体消息框在已发布的ASP.Net应用程序中不起作用

我们正在使用asp.net和C#以及.Net Framework 3.5开发.Net应用程序.

我们在.Net应用程序中使用Windows窗体消息框.此窗体在调试模式下运行良好,但一旦我们发布应用程序,此消息框将无法正常工作.我们引用System.Windows.Form.dll以使用消息框功能.如果我们需要注册此DLL或遵循一些配置步骤以解决此问题,请提供建议.

谢谢先进,Jad

.net asp.net dll messagebox winforms

0
推荐指数
1
解决办法
945
查看次数

为什么我的项目不会调试?

我刚下载了Microsoft Visual C++,并试图运行一个简单的hello世界.但是,当我去调试时,我收到错误"无法启动程序'C:\ Users\Sterling\Documents\Visual Studio2010\Projects\test\Debug\test.dll'"

就是这样.它没有说为什么它不能启动它...它只是说它不能.有没有人经历过这个?知道答案吗?我正在考虑重新安装它,但希望首先找到一个简单的解决方案.我需要一个单独的程序来启动.dll文件吗?一个星期前我刚拿到这台笔记本电脑,所以我可能还没有.这是在Windows 7上.感谢您的帮助.

windows debugging dll visual-studio-2010 visual-c++

0
推荐指数
1
解决办法
87
查看次数

dll映像如何在虚拟内存中比硬盘空间大1000倍?

我正在开发一个32位的Windows应用程序,偶尔会耗尽内存(2GB的虚拟地址空间).当我看看如何使用WinDbg或VMMap分配虚拟内存时,我注意到一个dll映像占用了85 MB的虚拟内存空间.具体来说,84 MB是在".data"部分,并具有"写入时复制"保护.但是,当我查看硬盘时,dll只有81 KB.

dll映像如何在虚拟地址空间中比在磁盘上大1000倍?请注意,我只询问"图像",而不是堆或堆栈,或映射内存,只是图像 - 我意识到堆,堆栈,映射内存等当然会是额外的.

memory windows dll memory-management

0
推荐指数
1
解决办法
139
查看次数

C#:如何将DLL嵌入资源文件(程序目录中没有DLL复制)

我有一个需要X.dll的C#应用​​程序(项目A).我已经将生成X.dll的项目添加到了Visual Studio中作为参考.我还将X.dll的发布版本添加到A中的资源文件中作为二进制文件.我告诉项目A 不要将X.dll复制到输出目录.

现在我想要A.exe加载,说"嘿我找不到这个文件",然后查看资源文件并使用Assembly.Load(byte [])获取X.dll.我有代码重新魔术DLL,但这个代码永远不会被调用.

目前我有一个骨头简单的项目,只是试图让它工作.它编译好了.当我运行它时,我在X.dll上得到一个FileNotFoundException.

我有:

[STAThread]
static void Main()
{
    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
Run Code Online (Sandbox Code Playgroud)

但*CurrentDomain_AssemblyResolve*中的断点永远不会被击中.我立即得到一个FileNotFoundException.当然有一些我遗失的东西?

c# embed dll resources assemblies

0
推荐指数
1
解决办法
4115
查看次数

无法从C#.NET加载Win32本机DLL文件

我有一个C#winapp.我从C#应用程序调用一个原生.dll文件(由我自己创建),它工作正常.

但是当我将我的应用程序(.exe和.dll文件)复制到另一台机器时,我收到一条错误消息:

无法加载DLL"c:\ dllname.dll":找不到指定的模块.(来自HRESULT的异常:0x8007007E)

这是C#代码:

class IsoMessageHelper
{
    public const string ISO8583_DLL = "c:\\Hc8583.dll";
    [DllImport(ISO8583_DLL, CallingConvention = CallingConvention.Cdecl)]
    public static extern bool InitializationRq(...)
}
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

c# dll winapi

0
推荐指数
1
解决办法
2686
查看次数

如何在C#中使用C++编写的外部.dll资源上正确创建入口点

长时间读者,第一次海报.有一天,我希望在这里回答问题......

所以它类似于:"无法在dll中找到名为[function]的入口点"(c ++到c#类型转换)

但我似乎无法应用相同的解决方案......

基本上,我写了一个新的方法:

在C++项目的头文件中定义为:

extern "C" {
     __declspec(dllexport) bool IsDataValid();
}
Run Code Online (Sandbox Code Playgroud)

在C++项目的源文件中定义为:(仅限signiature)

extern bool __cdecl IsDataValid() { 
//function stuf......... returns a bool
}
Run Code Online (Sandbox Code Playgroud)

导入C#项目中的表单C#应用程序:

[DllImport("CarChipSDK_C_Sharp.dll", EntryPoint = "IsDataValid")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsDataValid();
Run Code Online (Sandbox Code Playgroud)

它是从C#表单.cs文件中的同一个地方调用的:

bool isDataValid = IsDataValid();
Run Code Online (Sandbox Code Playgroud)

它返回一个带有消息的异常:

"无法找到DLL'CarChipSDK_C_Sharp.dll'中命名的入口点'IsDataValid()'.

我在从c ++代码生成的.dll上使用了dumpbin.exe和dependency walker,它显示它具有IsDataValid()入口点.

非常感谢所有帮助......

问题解决了!愚蠢的我,这是我现在公司以前的合作社的代码,结果他正在从bin/release文件夹中读取.dll,我正在构建bin/debug文件夹.应该知道的.真诚的道歉.

c# c++ dll entry-point

0
推荐指数
1
解决办法
3421
查看次数