MASM:从程序集中访问全局 C 变量

2023-11-23

我正在编写一个程序来转换图像并比较 C 语言和汇编语言处理数据的速度。我有3个项目:

  • C语言的主要项目
  • C 中的 DLL 来转换图像
  • ASM中的DLL用于转换图像

在C DLL头文件中,我简单地写了:

#ifdef PROJEKTC_EXPORTS
    #define PROJEKTC_API __declspec(dllexport)
#else
    #define PROJEKTC_API __declspec(dllimport)
#endif

...

extern PROJEKTC_API unsigned int ThreadID;      

PROJEKTC_API void __cdecl funkcjaC(void* Args); 

包含此标头后,我可以在主项目和 C DLL 中访问变量 ThreadID。

当我尝试在 ASM 中执行相同操作时,问题就出现了。我尝试过像这样的结构extern ASMThreadID:dword在 .code 块中,但它不起作用。

我得到的错误:error LNK2019: unresolved external symbol _ASMThreadID referenced in function _MyProc1

我感觉这只是 1-2 行代码的问题,但我不知道应该使用哪条指令。

我通过 ASM 中的模块定义文件链接项目,并将 ASM.lib 文件添加到主项目的 Linker->Input 中。

你有什么建议吗?


在 asmcommunity.net 旧帖子的帮助下,我成功地使其正常工作:

  • 在 .asm 文件中,.data 段之前:

EXTERNDEF C ASMThreadID:DWORD

  • 在.data段中:

ASMThreadID dd 0

  • 在ASM DLL的.def文件中:

LIBRARY "nameOfProject" EXPORTS ... ASMThreadID

  • 在主 C 程序头中(如全局声明):

extern __declspec(dllimport) unsigned int ASMThreadID;

现在它就像一个魅力。

“公开”声明让我找到了正确的搜索方式。谢谢你的帮助,伙计!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MASM:从程序集中访问全局 C 变量 的相关文章

  • 命名管道客户端无法连接到作为网络服务运行的服务器

    我有一个服务在网络服务帐户下运行 该服务只是设置一个命名管道并侦听连接 NamedPipeServerStream listeningPipe new NamedPipeServerStream ourservicepipe PipeDir
  • C++:字符串流有什么好处?

    谁能告诉我一些在 C 中使用字符串流的实际例子 即使用流插入和流提取运算符输入和输出到字符串流 您可以使用字符串流来转换任何实现operator lt lt 到一个字符串 include
  • C 链表销毁函数

    我正在尝试学习 C 和很多人一样 我对指针有点困惑 无论如何 我创建了一个递归函数来销毁我的链表 但是正如我调试的那样 当我从函数返回时 列表的头部不应该为空 所以我猜这是对指针的一些基本误解 这是函数 void destroy struc
  • 将视频上传/保存到数据库或文件系统

    我以前从未尝试过保存视频 所以我对此了解不多 我知道如果视频很小 我可以转换为字节数组并保存到数据库 但是为了提高效率 我想了解如何将任何上传的视频保存到我的服务器文件中 然后只保存该文件的文件路径我的数据库表中的视频 我完全不知道如何开始
  • 如何在Unity Inspector中创建多维数组?

    如何在 Unity Inspector 中创建枚举多维数组并使其可序列化 以便我可以从不同的脚本调用它 public enum colors red blue green yellow cyan white purple public in
  • 我如何知道向量的实际最大大小? (不使用 std::vector::max_size)

    在在线课程中 我正在学习向量 在其中一个例子中 他们解释说 std vector max size 应该给我向量可以达到的最大大小 我决定测试一下 include
  • 如何生成可变参数包?

    给定不相关的输入是否可以生成非类型参数包 我的意思是 我想改变这一点 template
  • 用 OpenCL C 编写快速线性系统求解器

    我正在编写一个 OpenCL 内核 它将涉及求解线性系统 目前我的内核太慢了 提高线性系统部分的性能似乎是一个不错的起点 我还应该注意 我并没有尝试使我的线性求解器并行 我正在研究的问题在宏观层面上已经是令人尴尬的并行 以下是我编写的 C
  • 将 std::pair const 转换为 std::pair const 安全吗?

    理论上或实践上 安全吗reinterpret cast a std pair
  • Web浏览器控件:如何捕获文档事件?

    我正在使用 WPF 的 WebBrowser 控件加载一个简单的网页 在这个页面上我有一个锚点或一个按钮 我想在我的应用程序后面的代码中 即在 C 中 捕获该按钮的单击事件 WebBrowser 控件是否有办法捕获加载页面元素上的单击事件
  • _MM_TRANSPOSE4_PS 在 GCC 中导致编译器错误?

    我第一次在 GCC 而不是 MSVC 中编译我的数学库 并经历了所有的小错误 我遇到了一个根本没有意义的错误 Line 284 error lvalue required as left operand of assignment 284号
  • 是否自初始化 'A a = a;'允许吗?

    此代码在运行时在复制构造函数中失败 但编译器 MSVS2008 没有发出警告 您能解释一下 最好引用标准 这段代码是否非法或什么 我理解 A a a 永远不应该写在第一位 但我正在寻找理论背景 class A public A p new
  • “DeploymentItem”属性是什么意思?

    假设我们有一个简短的程序 namespace ConsoleTryIt static class Program static void Main string args var sum Add 1 2 private static int
  • 当分配返回 0 时,具有空异常规范的运算符 new 调用构造函数

    我有以下声明 void operator new size t s PersistentMemory m throw return m gt allocatePersistentMemory s 我正在测试启动时的内存耗尽 这会导致m gt
  • C++ 模板参数数量错误(2,应该是 1)

    我使用 C 并行快速排序程序进行了测试 如下所示 首先使用列表作为容器 然后我转移到通用容器类型 但它报告了标题错误 可以帮忙解决这个问题吗 include
  • C中使用JNI从对象获取对象

    public class Student private People people private Result result private int amount 这是 Java 中类的示例 在C中 我试图获取 学生 中的 人 但失败了
  • C++ 在预处理器 #if 中对 sizeof() 比较抛出编译错误

    我有这个 它不会从 Visual Studio 编译错误 致命错误 C1017 无效的整数常量表达式 我该怎么做 template
  • 调用泛型类的方法

    这是上下文 我尝试编写一个映射器来动态地将域模型对象转换为 ViewModel 对象 我遇到的问题是 当我尝试通过反射调用泛型类的方法时 出现此错误 System InvalidOperationException 无法对 Contains
  • 小数精度

    我使用小数类型进行高精度计算 货币 但我今天遇到了这个简单的划分 1 1 37 这应该再次得到 37 http www wolframalpha com input i 1 2F 281 2F37 29 http www wolframal
  • 推断“x => { throw .. }”的 Lambda 与重载方法中的 Func 匹配吗?

    我不明白为什么 C 最终在以下 LINQPad 代码中执行不正确的扩展方法 void Main Actual Sync Action Expected Sync Action Run x gt x Dump Actual Async Tas

随机推荐

  • 在内存而不是文件系统中创建文件

    我正在使用 NET 库函数将文件上传到服务器 并将文件路径作为参数 我想要发送的数据很小并且是在运行时构建的 我可以将其保存到临时文件 然后上传 由于我的应用程序将部署在各种环境中 并且我不知道是否能够可靠地创建临时文件 因此最好能够传递到
  • 如何分发Java应用程序

    我想了解分发 Java 应用程序的各种选项 我知道你可以 分发源代码并让用户自己编译 或提供make文件等 将其打包成 JAR 并具有自解压档案 和 我确信 还有无数其他方式 我希望对最常见的选项 以及我没有想到的选项 进行一些解释 特别是
  • Chrome 扩展 + Devise + Rails 应用程序 - 从扩展发出经过身份验证的请求?

    我正在构建一个 Chrome 扩展程序 可以直接从浏览器创建联系人 而无需转到我的由 devise 驱动的 Rails 应用程序本身 Contacts Create 需要身份验证 因此我想知道如何从扩展程序发送经过身份验证的请求 我已启用设
  • .NET Core 未显示在 Visual Studio 2022 的目标框架下拉列表中

    我已经安装了 NET core 3 1 并验证了我可以在我的计算机上运行 NET core 3 1 应用程序 但是当我去创建新项目时 目标框架的下拉列表仅允许 NET 6 0 我正在使用 Visual Studio 2022 我在笔记本电脑
  • ASP.NET Web 服务器无法启动并且无法切换 Mono 环境

    我在跑步Monodevelop 的最新版本之一在 Linux Mint 上 在我格式化驱动器并进行全新安装之前 它曾经可以工作 当我构建项目时 它构建得很好 但是当我尝试运行它时 我收到以下消息 无法启动 ASP NET Web 服务器 找
  • 如何在CSS中将页脚粘贴到底部? [复制]

    这个问题在这里已经有答案了 我遇到了在浏览器底部定位页脚的经典问题 我尝试过的方法包括http ryanfait com resources footer stick to bottom of page 但没有什么好结果 我的页脚总是出现在
  • HTML中点击后如何保持选择?

    我正在编写一个 WYSIWYG 编辑器 不能使用像 TinyMCE 这样的东西 必须自己编写代码 并且我希望用户能够通过在 HTML 中添加标签来将文本设置为粗体 下划线 链接等 我遇到的问题是 当用户选择可编辑 div 中的文本 然后单击
  • Bash 检查是否存在不存在的文件?

    在 bash 中运行以下命令 stuff rpm ql
  • 使用 Eclipse + ADT 创建 Android 应用程序的“最小”源文件

    我试图使用 Eclipse ADT Android 开发工具包 来了解最小 Android 应用程序的结构 请您告知我需要的最小源文件集是什么 例如 src package MainActivity java res layout acti
  • Visual Studio 中的 Typescript AMD 模块

    我从使用 Visual Studio 2012 Ultimate 的 TypeScript 开始 我已经更改了 MSBuild 包括编译器命令中的 module amd 标记 编译器开始生成AMD模块 我在我的项目中包含了来自 Nuget
  • Python:乘法覆盖

    所以 我有一个自定义类 mul 与整数一起使用的函数 然而 在我的程序 在库中 中 它被以相反的方式调用 即2 x where x是我班的 有什么办法可以让它使用我的 mul 功能为此 只需将以下内容添加到类定义中即可 rmul mul
  • 返回匿名类型的简单方法(使使用 LINQ 的 MVC 成为可能)

    我想在使用 LINQ 特别是 LINQ to entities 的同时实现 MVC 我这样做的方法是让控制器使用 LINQ 生成 或调用生成的东西 结果集 然后将其返回到视图以显示数据 问题是 如果我这样做 return from o in
  • Xkb:如何将键码转换为键符号

    我只是尝试获取 KeyCode 和修饰符掩码 并使用 Xkb 扩展将其转换为 KeySym 我似乎无法弄清楚为什么这不起作用 很明显修饰符不匹配 但我不知道为什么 我什至不知道我是否正确转换了该组 include
  • 如何动态地将输入字段添加到表单中?

    我不是一个网络程序员 但我正在创建一个简单的网络应用程序 它有一个表单 用户可以在其中输入一系列点 x y z 但我不知道用户有多少即将进入 我不想猜测可能的最大值 也许是 100 并在表单上放置 100 个字段 因为它看起来很难看 当用户
  • 替换除字符串开头以外的所有字符(正则表达式)

    我正在尝试删除字符串数字中的所有减号 破折号 除了第一次出现之外 摆弄正则表达式 JavaScript 半小时后 仍然没有结果 有谁知道修复方法吗 Given 123 45 6 预期的 123456 Given 789 1 0 预期的 78
  • 为什么我的 TinyMCE 隐藏文本区域出现问题?

    我有大约7个textarea网页上的所有内容都是使用TinyMCE的富文本编辑器 然而 在页面加载时 只有其中 1 个可见 其余的则隐藏 用户可以单击 显示 链接 该链接将一一显示剩余的文本区域 但是 我有一个奇怪的问题 一切textare
  • 如何将 CSV 文件拆分为多个块并在 Java 代码中并行读取这些块

    我有一个非常大的 CSV 文件 1GB 它有 100 000 行 我需要编写一个 Java 程序来解析 CSV 文件中的每一行 以创建要发送的 HTTP 请求的正文 换句话说 我需要发送 100 000 个 HTTP 请求 这些请求与 CS
  • jQuery .text() 多个元素同一个类

    我试图在页面上的多个 未知数量 元素上使用 text 考虑 ul li class myClass element1 li li class myClass element2 li li class myClass element3 li
  • 旋转图像时如何避免OutOfMemory ex?

    public static boolean rotateBitmapByExifAndSave File targetFile if targetFile null targetFile exists targetFile canRead
  • MASM:从程序集中访问全局 C 变量

    我正在编写一个程序来转换图像并比较 C 语言和汇编语言处理数据的速度 我有3个项目 C语言的主要项目 C 中的 DLL 来转换图像 ASM中的DLL用于转换图像 在C DLL头文件中 我简单地写了 ifdef PROJEKTC EXPORT