标签: dll

存储和引用DLL库的最佳实践?

通常,我的团队中的开发人员将创建一个新的Visual Studio项目,并在其本地计算机上的某处引用DLL(例如,C:\ mydlls\homersimpson\test.dll).然后,当我从源代码控制存储库获取项目时,我无法构建项目,因为我没有在我的机器上完全相同的位置引用的dll.

存储和引用共享库的最佳实践是什么?

version-control dll

25
推荐指数
1
解决办法
8850
查看次数

.NET中dll的版本号

鉴于以下内容:

string file = @"c:\somepath\somefile.dll";
Run Code Online (Sandbox Code Playgroud)

如何使用.NET查找该DLL的文件和产品版本号?

dll可以是本机的或托管的.

谢谢.

.net c# versioning dll

25
推荐指数
1
解决办法
2万
查看次数

安装到GAC的DLL的(物理)(已安装)路径

如何获得(可能)在GAC中注册的DLL的(物理)安装路径?此DLL是一个控件,可以托管在.Net应用程序以外的东西中(包括除VS之外的IDE ...).

当我使用System.Reflection.Assembly.GetExecutingAssembly().Location时,它给出了winnt\system32中GAC文件夹的路径 - 或者在VS中的设计模式中给出了VS IDE的路径.

我需要获得实际安装物理dll的路径 - 或者VS的bin/debug或(release)文件夹.

原因是我需要在此文件夹中获取一个XML文件,其配置设置既可以在设计模式下使用,也可以在运行时使用.

或者如何处理这种情况最好?我目前在设计模式中使用了一个可疑的网络位置...(不要认为ApplicationData文件夹会削减它(但是因为通过ClickOnce ans安装的.Net版本可以使用Clickonce数据)文件夹))

c# dll gac file

24
推荐指数
1
解决办法
6万
查看次数

如何静态链接.DLL?

我们有一个由VS构建的(纯本机C++).DLL.作为客户端,我们有一些本机C++应用程序和围绕这个用C++/CLI编写的DLL的.Net-Wrapper.最后,有一些用C#编写的.Net-Wrapper客户端应用程序.

我的问题是native.dll必须以与.Net世界不同的方式分发,并且VS不会跟踪该DLL.因此,要让我的所有C#应用程序正常工作,我必须将其复制到每个可执行文件目录中,或者将其放在%PATH%中(我会避免在开发人员计算机上,因为他们可能希望使用不同版本的DLL启动不同的应用程序).如果存在引用Wrapper-DLL的UserControl,则会出现更大的问题:您必须将DLL复制到VS的目录或再次复制到%PATH%.但最坏的情况发生在我们的翻译工具上.该工具跟踪.Net-Assemblies并将它们打包到可以发送给外部翻译器的Translator-packages中.据我所知,没有办法将原生.DLL放入该包中!

所以我打算将原生DLL静态链接到.Net-Wrapper,这将解决我的问题.但对于我们的Native应用程序,此本机DLL仍必须是DLL.

所以我有两个选择:

  • 制作两个项目(一个生成静态库;一个创建动态库=>我尽量避免这种情况)
  • 找到一个静态链接DLL的解决方案
  • 找到一种让VS从一个项目生成两个输出的方法

c++ dll linker static-linking

24
推荐指数
3
解决办法
4万
查看次数

在C#的应用程序加载期间,我可以捕获丢失的DLL错误吗?

无法找到引用的.dll时是否可以捕获异常?

例如,我有一个C#项目,引用了第三方dll; 如果找不到该dll,则抛出异常.例外是System.IO.FileNotFoundException,但我无法确定将其捕获的位置.以下代码似乎不起作用:

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        try
        {
          // code goes here
        }
        catch (Exception exc)
        {
            MessageBox.Show(exc.ToString());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# dll

24
推荐指数
2
解决办法
2万
查看次数

在非Qt应用程序中使用基于Qt的DLL

我做得对吗?

我的一个客户有一个小组,我正在开发基于Qt的客户端 - 服务器的东西,有很多有趣的小部件和套接字.

公司内的另一个团队希望使用基于QTcpSocket的客户端数据提供程序类的封装版本.(基本上它听起来像,提供从服务器到客户端显示器的数据)

但是,该组有一个巨大的应用程序,主要是使用MFC构建的,这根本不会很快改变.基于Qt的DLL也是延迟加载的,因此在某些配置中可以在没有此功能的情况下部署它.

我有它的工作,但它有点hacky.这是我目前的解决方案:

DLL包装器类构造函数调用QCoreApplication :: instance()以查看它是否为NULL.如果它为NULL,则假定它在非Qt应用程序中,并创建它自己的QCoreApplication实例:

if (QCoreApplication::instance() == NULL)
{
    int argc = 1;
    char* argv[] = { "dummy.exe", NULL };
    d->_app = new QCoreApplication(argc, argv);  // safe?
}
else
    d->_app = NULL;
Run Code Online (Sandbox Code Playgroud)

然后它将设置一个Windows计时器,偶尔调用processEvents():

if (eventTimerInterval > 0)
{
    // STATE: start a timer to occasionally process the Qt events in the event queue
    SetTimer(NULL, (UINT_PTR)this, eventTimerInterval, CDatabaseLayer_TimerCallback);
}
Run Code Online (Sandbox Code Playgroud)

回调只是使用timerID作为指向类实例的指针来调用processEvents()函数.SetTimer()文档说当HWND为NULL时它会忽略timerID,所以这看起来完全有效.

VOID CALLBACK BLAHBLAH_TimerCallback(HWND hwnd, UINT uMsg, UINT_PTR idEvent, DWORD dwTime)
{
    ((BLAHBLAH*)idEvent)->processEvents(); // basically just …
Run Code Online (Sandbox Code Playgroud)

dll qt mfc

24
推荐指数
2
解决办法
1万
查看次数

静态链接的可执行文件是否比动态链接的可执行文件更快?

由于动态链接库必须在运行时解析,静态链接的可执行文件是否比动态链接的可执行文件更快?

dll performance linker dynamic-linking static-linking

24
推荐指数
2
解决办法
1万
查看次数

如何从dll文件中提取类的源代码?

有没有软件可以做到这一点?我没有在互联网上找到任何有用的信息,所以我在这里问.

c# asp.net dll reverse-engineering source-code-protection

24
推荐指数
4
解决办法
9万
查看次数

如何使用SQLSRV扩展来使用PHP,因为MSSQL已被弃用?

我升级到PHP 5.3,并注意到缺少php_mssql.dll.谷歌搜索后,似乎5.3已经放弃了对mssql的支持.所以我从微软下载了驱动程序,但我似乎无法让它工作.

我在窗户上.在解压缩PHP 5.3的ext目录中的文件后,我需要做什么?

php sql-server dll

24
推荐指数
2
解决办法
12万
查看次数

Delphi XE2:通过64位app调试64位dll

有没有人通过运行/附加到64位应用程序来成功调试64位dll?我有应用程序和DLL的Delphi代码.我可以用32位和64位调试应用程序.我也可以通过使用Run- > Parameters来调试32位dll 来选择32位版本的应用程序.

但是,我似乎无法通过运行64位应用程序调试我的64位DLL,有没有人让这个工作?

delphi debugging dll 64-bit delphi-xe2

24
推荐指数
1
解决办法
2201
查看次数