use*_*146 1 c++ qt error-code dllexport
我从C++ DLL导出了一个方法,然后从VB.net表单应用程序中调用它.C++方法当前没有返回值(void)但我想改进它并返回一个表示一系列错误代码的int.(如果一切顺利,我计划返回零.)
定义这些错误代码的最佳位置在哪里以及如何?
我应该在CPP文件的顶部执行以下操作:
#define ERR_NEGATIVE_CELL_SIZE 1
#define ERR_INVALID_FILE_PATH 2
etc
Run Code Online (Sandbox Code Playgroud)
VB.net应用程序还将定义这些相同的代码,然后根据代码向用户显示UI消息.
显然我宁愿在DLL中抛出异常并在VB.net中捕获它(以及相关的异常消息),但这似乎不可能使用extern"C"__declspec(dllexport)方法.
很高兴听到其他设计模式.我还计划通过C++控制台可执行文件公开DLL方法,因此将错误消息一次存储在DLL中并将它们提供给控制台和UI应用程序是理想的选择.
请尽可能避免使用预处理器.
对于您的场景,定义枚举将是合理的.在函数原型旁边定义它.要公开翻译,请使用翻译功能并将其导出.就像是:
size_t TranslateError(int error, char* buffer, size_t size)
Run Code Online (Sandbox Code Playgroud)
返回:已翻译消息的大小,如果返回<= len,则返回缓冲区中的消息
如果您希望错误代码可用于其他编译单元,则最好将它们放在头文件中.通常,在编写库代码时,您将创建一个或多个头文件,这些头文件声明了使用库所需的所有常量,类型,函数和类.然后将实现编译到库中.库的使用者包括您的标题和导入库.
关于你的常数,你建议用它#define来声明它们.不要那样做.考虑使用常量或枚举.预处理器通常尽可能少地使用.
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |