jjzjj

windows - 创建生成 DLL 的应用程序

coder 2024-06-21 原文

目前,我有一个构建为 DLL 的 MFC C++ visual studio 项目。我们称它为 FinalDLL

我需要这个 FinalDLL 是可配置的。所以,我想要一个 GUI,以便用户可以根据通过 GUI 输入的信息生成 FinalDLL。请考虑到我不想在任何时候都提供这些资源。

我不清楚如何整合这些步骤。我想出的解决方案是在我的 GUI 中有一个类似按钮的东西,这样当它被点击时,FinalDLL 就会根据通过 GUI 输入的信息生成。有可能做那样的事情吗?可能我需要另一个 DLL 库,因为通过 GUI 输入的信息可以调用 FinalDLL 源代码中使用的函数。

最佳答案

这个的解决方案会很复杂很复杂,主要是你不想泄露DLL的源代码。

基本上,每次要生成 DLL 时都需要编译这些源文件,而且用户无法访问它们。

首先,对于您希望将 DLL 生成器应用程序分发到的用户,这也是必需的。

其次,您需要将这些文件以加密形式存储在应用中的某个位置,这样黑客就不会只查看您的应用二进制文件并提取 DLL 的源代码。

作为用户端的先决条件,他需要安装兼容的 Visual Studio,这将用于动态编译源代码文件。

DLL 生成器应用程序需要做的是通过应用程序将呈现的形式即时编译这些源代码文件以及自定义的文件。

那么您需要做什么(由于要求复杂,列表可能并不详尽):

  1. 收集 Visual Studio 在构建项目时执行的所有编译器/链接器命令
  2. 将所有源代码文件以加密形式存储到您的应用程序中。现在,如果你想让你的应用程序解码文件,那么你需要将加密 key 存储在应用程序中,并对其进行混淆处理,这样它就不容易找到,或者让应用程序与你的服务器通信并请求加密 key 通过 https(这是一种更安全的方法,但这也不是 100% 防弹的,坚持/训练有素的黑客仍然可以窥视您的应用程序使用的内存)
  3. 在用户填写所有 DLL 生成详细信息后,应用程序将需要解密源代码文件,更新受自定义参数影响的文件,并使用在步骤 #1 中收集的命令启动构建过程。编译器/链接器应该允许从 stdin 读取,因此您将使用管道将源代码内容写入编译器/链接器 stdin,并从 stdout 获取编译/链接的对象。

正如我所说,解决方案并不完美,主要问题是让用户安装一个 Visual Studio,它附带一个与您机器上的编译器兼容的编译器,否则您在步骤 #1 中收集的命令将不会工作。

关于windows - 创建生成 DLL 的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29901959/

有关windows - 创建生成 DLL 的应用程序的更多相关文章

  1. ruby - 使用 RubyZip 生成 ZIP 文件时设置压缩级别 - 2

    我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看ruby​​zip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d

  2. ruby - 如何在 Ruby 中顺序创建 PI - 2

    出于纯粹的兴趣,我很好奇如何按顺序创建PI,而不是在过程结果之后生成数字,而是让数字在过程本身生成时显示。如果是这种情况,那么数字可以自行产生,我可以对以前看到的数字实现垃圾收集,从而创建一个无限系列。结果只是在Pi系列之后每秒生成一个数字。这是我通过互联网筛选的结果:这是流行的计算机友好算法,类机器算法:defarccot(x,unity)xpow=unity/xn=1sign=1sum=0loopdoterm=xpow/nbreakifterm==0sum+=sign*(xpow/n)xpow/=x*xn+=2sign=-signendsumenddefcalc_pi(digits

  3. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  4. python - 如何使用 Ruby 或 Python 创建一系列高音调和低音调的蜂鸣声? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。

  5. ruby - 将差异补丁应用于字符串/文件 - 2

    对于具有离线功能的智能手机应用程序,我正在为Xml文件创建单向文本同步。我希望我的服务器将增量/差异(例如GNU差异补丁)发送到目标设备。这是计划:Time=0Server:hasversion_1ofXmlfile(~800kiB)Client:hasversion_1ofXmlfile(~800kiB)Time=1Server:hasversion_1andversion_2ofXmlfile(each~800kiB)computesdeltaoftheseversions(=patch)(~10kiB)sendspatchtoClient(~10kiBtransferred)Cl

  6. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  7. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  8. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  9. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  10. ruby-on-rails - Rails 应用程序之间的通信 - 2

    我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此

随机推荐